chiark
/
gitweb
/
~mdw
/
lisp
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
79ae1f5
)
anaphora.lisp: Export symbols near their definitions.
author
Mark Wooding
<mdw@distorted.org.uk>
Wed, 21 Oct 2015 23:46:28 +0000
(
00:46
+0100)
committer
Mark Wooding
<mdw@distorted.org.uk>
Thu, 22 Oct 2015 00:21:57 +0000
(
01:21
+0100)
anaphora.lisp
patch
|
blob
|
blame
|
history
diff --git
a/anaphora.lisp
b/anaphora.lisp
index 9e7d82039242ab09c6f52d640621a8b529bbfb19..3fd69c5e15447d0fffdf9a2ef3871f3d973592ad 100644
(file)
--- a/
anaphora.lisp
+++ b/
anaphora.lisp
@@
-24,17
+24,18
@@
;;; Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
(defpackage #:anaphora
;;; Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
(defpackage #:anaphora
- (:use #:common-lisp)
- (:export #:it
- #:aif #:aif2 #:awhen #:awhen2
- #:aand #:awhile #:asetf #:acond))
+ (:use #:common-lisp))
(in-package #:anaphora)
(in-package #:anaphora)
+(export 'it)
+
+(export 'aif)
(defmacro aif (cond then &optional else)
"Bind `it' to result of COND when evaluating THEN or ELSE."
`(let ((it ,cond))
(if it ,then ,@(and else (list else)))))
(defmacro aif (cond then &optional else)
"Bind `it' to result of COND when evaluating THEN or ELSE."
`(let ((it ,cond))
(if it ,then ,@(and else (list else)))))
+(export 'aif2)
(defmacro aif2 (cond then &optional else)
"Bind `it' to first value of COND; switch on second."
(let ((tmp (gensym)))
(defmacro aif2 (cond then &optional else)
"Bind `it' to first value of COND; switch on second."
(let ((tmp (gensym)))
@@
-42,11
+43,13
@@
(defmacro aif2 (cond then &optional else)
(declare (ignorable it))
(if ,tmp ,then ,@(and else (list else))))))
(declare (ignorable it))
(if ,tmp ,then ,@(and else (list else))))))
+(export 'awhen)
(defmacro awhen (cond &body body)
"Bind `it' to result of COND when evaluating BODY."
`(let ((it ,cond))
(when it ,@body)))
(defmacro awhen (cond &body body)
"Bind `it' to result of COND when evaluating BODY."
`(let ((it ,cond))
(when it ,@body)))
+(export 'awhen2)
(defmacro awhen2 (cond &body body)
"Bind `it' to first value of COND; switch on second."
(let ((tmp (gensym)))
(defmacro awhen2 (cond &body body)
"Bind `it' to first value of COND; switch on second."
(let ((tmp (gensym)))
@@
-54,6
+57,7
@@
(defmacro awhen2 (cond &body body)
(declare (ignorable it))
(when ,tmp ,@body))))
(declare (ignorable it))
(when ,tmp ,@body))))
+(export 'aand)
(defmacro aand (&rest things)
"Like `and', with `it' bound to previous value."
(labels ((foo (things)
(defmacro aand (&rest things)
"Like `and', with `it' bound to previous value."
(labels ((foo (things)
@@
-65,6
+69,7
@@
(defmacro aand (&rest things)
(foo things)
t)))
(foo things)
t)))
+(export 'awhile)
(defmacro awhile (cond &body body)
"Like `while', with `it' bound to value of COND in BODY."
`(loop
(defmacro awhile (cond &body body)
"Like `while', with `it' bound to value of COND in BODY."
`(loop
@@
-72,6
+77,7
@@
(defmacro awhile (cond &body body)
(unless it (return))
,@body)))
(unless it (return))
,@body)))
+(export 'asetf)
(defmacro asetf (&rest pairs &environment env)
"Set PLACE to value of FORM; in FORM, `it' is bound to current value of
PLACE."
(defmacro asetf (&rest pairs &environment env)
"Set PLACE to value of FORM; in FORM, `it' is bound to current value of
PLACE."
@@
-90,6
+96,7
@@
(defmacro asetf (&rest pairs &environment env)
(foo rest))))))
(cons 'progn (foo pairs))))
(foo rest))))))
(cons 'progn (foo pairs))))
+(export 'acond)
(defmacro acond (&rest clauses)
"Like `cond', but in each clause the consequent has `it' bound to the value
of its guard."
(defmacro acond (&rest clauses)
"Like `cond', but in each clause the consequent has `it' bound to the value
of its guard."