|
|
@ -48,7 +48,8 @@
|
|
|
|
(let ((errnm (gensym)))
|
|
|
|
(let ((errnm (gensym)))
|
|
|
|
`(let ((,errnm (handler-case (cons ,try nil)
|
|
|
|
`(let ((,errnm (handler-case (cons ,try nil)
|
|
|
|
(t (e)
|
|
|
|
(t (e)
|
|
|
|
(cons (progn ,@catch) e)))))
|
|
|
|
(let ((e e))
|
|
|
|
|
|
|
|
(cons (progn ,@catch) e))))))
|
|
|
|
(if (cdr ,errnm)
|
|
|
|
(if (cdr ,errnm)
|
|
|
|
(values (car ,errnm) (cdr ,errnm))
|
|
|
|
(values (car ,errnm) (cdr ,errnm))
|
|
|
|
(values (car ,errnm) nil)))))
|
|
|
|
(values (car ,errnm) nil)))))
|
|
|
@ -263,6 +264,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
;; --- progressive evals
|
|
|
|
;; --- progressive evals
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defmacro progex (funcs expr)
|
|
|
|
|
|
|
|
"run funcs on expr, return specified"
|
|
|
|
|
|
|
|
(let ((name (gensym)))
|
|
|
|
|
|
|
|
`(let ((,name ,expr))
|
|
|
|
|
|
|
|
(mapcar #'(lambda (x) (funcall x ,name)) ,funcs)
|
|
|
|
|
|
|
|
,name)))
|
|
|
|
|
|
|
|
|
|
|
|
(defmacro progen (&rest things)
|
|
|
|
(defmacro progen (&rest things)
|
|
|
|
"mapn eval things"
|
|
|
|
"mapn eval things"
|
|
|
|
`(mapn #'eval '(,@things)))
|
|
|
|
`(mapn #'eval '(,@things)))
|
|
|
|