История изменений
Исправление pseudo-cat, (текущая версия) :
Во многих Лиспах это делается тривиально, к примеру -
(defmacro while-after (clause1 clause2 body)
`(loop while ,clause1
do ,body
when (not ,clause2)
do (return)))
(let ((a 1)) `(list :a ,a))
Примерчик:
(let ((p 0))
(while-after (< p 10) (not (= p 0))
(cond ((it-is-good-day? p)
(setf p (+ p 1)))
(t (setf p 0)))))
Исправление pseudo-cat, :
Во многих Лиспах это делается тривиально, к примеру -
(defmacro while-after (clause1 clause2 body)
`(loop while ,clause1
do ,body
when (not ,clause2)
do (return)))
(let ((a 1)) `(list :a ,a))
Примерчик:
(let ((p 0))
(while-after (< p 10) (not (= p 0))
(cond ((it-is-good-day? p)
(setf p (+ p 1)))
(t (setf p nil)))))
Исходная версия pseudo-cat, :
Во многих Лиспах это делается тривиально, к примеру -
(defmacro while-after (clause1 clause2 body)
`(loop while ,clause1
do ,body
when (not ,clause2)
do (return)))
(let ((a 1)) `(list :a ,a))