File size: 437 Bytes
43203b4 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | ;;;; do-notation.lisp
;;;; Copyright (c) 2013 Robert Smith
(in-package #:cl-algebraic-data-type)
(defmacro do-notation (bind-function expressions &body body)
"Given a BIND-FUNCTION and all the bind expressions, evaluate BODY."
`(progn
,@(reduce (lambda (acc do-binding)
(append `((,bind-function (lambda (,(car do-binding)) ,@acc)
,@(cdr do-binding)))))
(reverse expressions)
:initial-value body)))
|