summaryrefslogtreecommitdiff
path: root/destructuring-bind.lisp
diff options
context:
space:
mode:
authorMatthias Andreas Benkard <matthias@benkard.de>2008-07-27 12:34:26 +0200
committerMatthias Andreas Benkard <matthias@benkard.de>2008-07-27 12:34:26 +0200
commitd2370aa9d420b1e466e58f00dbda0309ade6ced9 (patch)
tree387e1b9575caab40bc0fddf31a680132a9cc6881 /destructuring-bind.lisp
parent85ee881e611058e41e7dd7bc9cacfb7933f6778b (diff)
D-B: Fix &OPTIONAL handling.
Diffstat (limited to 'destructuring-bind.lisp')
-rw-r--r--destructuring-bind.lisp18
1 files changed, 9 insertions, 9 deletions
diff --git a/destructuring-bind.lisp b/destructuring-bind.lisp
index 161390d..7be7e41 100644
--- a/destructuring-bind.lisp
+++ b/destructuring-bind.lisp
@@ -17,7 +17,7 @@
,@body)))
(&aux
(if (or (endp (cdr lambda-list))
- (member (cadr lambda-list) lambda-list-keywords))
+ (%member (cadr lambda-list) lambda-list-keywords))
`(d-b ,(cdr lambda-list) ,environment ,whole-sym ,expression
,@body)
`(let (,(cadr lambda-list))
@@ -25,29 +25,29 @@
,@body))))
(&optional
(if (or (endp (cdr lambda-list))
- (member (cadr lambda-list) lambda-list-keywords))
+ (%member (cadr lambda-list) lambda-list-keywords))
`(d-b ,(cdr lambda-list) ,environment ,whole-sym ,expression
,@body)
(let ((sym (gensym))
- (head (car lambda-list)))
+ (head (cadr lambda-list)))
`(let* ((,sym ,expression)
,@(cond ((atom head)
- `((,head (cadr ,sym))))
+ `((,head (car ,sym))))
((null (cdr head))
- `((,(car head) (cadr ,sym))))
+ `((,(car head) (car ,sym))))
((null (cddr head))
`((,(car head) (if (null ,sym)
,(cadr head)
- (cadr ,sym)))))
+ (car ,sym)))))
(t
`((,(car head) (if (null ,sym)
,(cadr head)
- (cadr ,sym)))
+ (car ,sym)))
(,(caddr head) (not (null ,sym)))))))
(d-b (&optional ,@(cddr lambda-list)) ,environment ,whole-sym (cdr ,sym)
,@body)))))
((&rest &body)
- (if (member (cadr lambda-list) lambda-list-keywords)
+ (if (%member (cadr lambda-list) lambda-list-keywords)
`(d-b ,(cdr lambda-list) ,environment ,whole-sym ,expression
,@body)
(let ((sym (gensym)))
@@ -64,7 +64,7 @@
,@body))
(&key
(if (or (endp (cdr lambda-list))
- (member (cadr lambda-list) lambda-list-keywords))
+ (%member (cadr lambda-list) lambda-list-keywords))
`(d-b ,(cdr lambda-list) ,environment ,whole-sym ,expression
,@body)
(let* ((sym (gensym))