summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
e856777)
This adds a dependency on `mdw-base.lisp'. That's what the base package
is for.
;;; 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 #:mdw.base))
(in-package #:anaphora)
(export 'it)
(in-package #:anaphora)
(export 'it)
,@body)))
(export 'asetf)
,@body)))
(export 'asetf)
-(defmacro asetf (&rest pairs &environment env)
+(defmacro asetf (&rest pairs)
"Set PLACE to value of FORM; in FORM, `it' is bound to current value of
PLACE."
"Set PLACE to value of FORM; in FORM, `it' is bound to current value of
PLACE."
- (labels ((foo (pairs)
- (when pairs
- (let ((place (car pairs))
- (form (cadr pairs))
- (rest (cddr pairs)))
- (cons (multiple-value-bind
- (valtmps valforms newtmps setform getform)
- (get-setf-expansion place env)
- `(let* ,(mapcar #'list valtmps valforms)
- (let* ((it ,getform)
- (,(car newtmps) ,form))
- ,setform)))
- (foo rest))))))
- (cons 'progn (foo pairs))))
+ `(progn ,@(do ((list nil)
+ (pairs pairs (cddr pairs)))
+ ((endp pairs) (nreverse list))
+ (unless (cdr pairs)
+ (error "Odd number of arguments to `asetf'."))
+ (push (with-places/gensyms ((place (car pairs)))
+ `(let ((it ,place))
+ (declare (ignorable it))
+ (setf ,place ,(cadr pairs))))
+ list))))
(export 'acond)
(defmacro acond (&rest clauses)
(export 'acond)
(defmacro acond (&rest clauses)
:version "2.0.3"
:author "Mark Wooding <mdw@distorted.org.uk>"
:components ((:file "mdw-base")
:version "2.0.3"
:author "Mark Wooding <mdw@distorted.org.uk>"
:components ((:file "mdw-base")
+ (:file "anaphora" :depends-on ("mdw-base"))
(:file "sys-base")
(:file "factorial")
(:file "queue")
(:file "sys-base")
(:file "factorial")
(:file "queue")