cl-ds / data /repos /cl-algebraic-data-type /do-notation.lisp
j14i's picture
3375 CL macro transformation examples from 85 libraries
43203b4 verified
;;;; 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)))