;; common-lisp every function

;;AUTOLOAD: every

(defun every (&rest l)
  (with (pred (getn l 0)
      call (subseq l 0)
      p (length (getn l 1))
      len (- (length l) 1)
      result ()
      li ()
    )
    (put call 0 (eval pred))
    (catch 'some-exit
      (dotimes (i p)
	(dotimes (j len)
	  (put call (+ j 1)
	    (list 'quote
	      (get
		(setq li (getn l (+ j 1)))
		i
		'(get li (- (length li) 1))
	))))
	(if (not (setq result (eval call)))
	  (throw 'some-exit result)
      ))
      result
)))
