Advertisement
Guest User

Untitled

a guest
Jan 30th, 2015
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.67 KB | None | 0 0
  1. (defmacro reducing (rf &body body)
  2. (destructuring-bind ((&rest b0) (a1 &rest b1) (a2 &rest b2)) body
  3. (with-gensyms (result input resultp inputp)
  4. `(flet (,(when (typep rf '(or symbol list))
  5. `(,rf (&rest args) (apply ,rf args))))
  6. (lambda (&optional (,result nil ,resultp) (,input nil ,inputp))
  7. (declare (optimize speed (debug 0) (safety 0)))
  8. (block nil
  9. (cond (,inputp (let ((,(car a2) ,result)
  10. (,(cadr a2) ,input))
  11. ,@b2))
  12. (,resultp (let ((,(car a1) ,result))
  13. ,@b1))
  14. (t ,@b0))))))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement