From 057af65f5e6d6bf6a31ec5484ac23a7ce845157d Mon Sep 17 00:00:00 2001 From: Colin Okay Date: Thu, 30 Jul 2020 08:48:13 -0500 Subject: added anaphoric FOLD and FOR --- anaphora.lisp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 anaphora.lisp (limited to 'anaphora.lisp') diff --git a/anaphora.lisp b/anaphora.lisp new file mode 100644 index 0000000..13bb980 --- /dev/null +++ b/anaphora.lisp @@ -0,0 +1,26 @@ +(in-package #:gtwiwtg.anaphora) + +(defmacro afor (generator &body body) + "Anaphoric FOR. Binds the values produced by GENERATOR to the variable IT. + +Example: + +> (afor (times 3) (print it)) +0 +1 +2 + +" + `(for it ,expr ,@body)) + +(defmacro afold (init generator update) + "Anaphoric FOLD. Binds the values produced by GENERATOR to IT, and +binds the accumulating variable to ACC. + +Example: + +> (afold 0 (times 10) (+ acc it)) +45 + +" + `(fold (acc ,init) (it ,expr) ,update)) -- cgit v1.2.3