Generator/Exponential: Difference between revisions

Content added Content deleted
Line 583: Line 583:
29: 1089
29: 1089
</pre>
</pre>

=={{header|Common Lisp}}==
<lang lisp>(defun take (seq &optional (n 1))
(values-list (loop repeat n collect (funcall seq))))

(defun power-seq (n)
(let ((x 0))
(lambda () (prog1 (expt (incf x) n)))))

(defun filter-seq (s1 s2) ;; remove s2 from s1
(let ((x1 (take s1)) (x2 (take s2)))
(lambda ()
(tagbody g
(if (= x1 x2)
(progn (setf x1 (take s1) x2 (take s2)) (go g)))
(if (> x1 x2)
(progn (setf x2 (take s2)) (go g))))

(prog1 x1 (setf x1 (take s1))))))

(let ((2not3 (filter-seq (power-seq 2) (power-seq 3))))
(take 2not3 20) ;; drop 20
(princ (multiple-value-list (take 2not3 10))))</lang>


=={{header|D}}==
=={{header|D}}==