[cl-utilities-cvs] CVS update: cl-utilities/compose.lisp
Peter Scott
pscott at common-lisp.net
Tue May 10 19:45:41 UTC 2005
Update of /project/cl-utilities/cvsroot/cl-utilities
In directory common-lisp.net:/tmp/cvs-serv5183
Modified Files:
compose.lisp
Log Message:
Fixed subtle bug in COMPOSE compiler macro. It was optimizing too
much, causing lexical definitions to be used when, strictly speaking,
funcall-time dynamic values should have been used.
Date: Tue May 10 21:45:38 2005
Author: pscott
Index: cl-utilities/compose.lisp
diff -u cl-utilities/compose.lisp:1.1.1.1 cl-utilities/compose.lisp:1.2
--- cl-utilities/compose.lisp:1.1.1.1 Mon May 9 23:26:29 2005
+++ cl-utilities/compose.lisp Tue May 10 21:45:34 2005
@@ -34,19 +34,12 @@
;; out and some things written as direct function calls.
;; Example: (compose '1+ #'2* '1+) => (LAMBDA (X) (1+ (2* (1+ X))))
(define-compiler-macro compose (&rest functions)
- (labels ((quoted-symbolp (x)
- (and (listp x)
- (eql (first x) 'quote)
- (symbolp (second x))))
- (sharp-quotedp (x)
+ (labels ((sharp-quoted-p (x)
(and (listp x)
(eql (first x) 'function)
- (symbolp (second x))))
- (directly-callable-p (x)
- (or (quoted-symbolp x)
- (sharp-quotedp x))))
+ (symbolp (second x)))))
`(lambda (x) ,(reduce #'(lambda (fun arg)
- (if (directly-callable-p fun)
+ (if (sharp-quoted-p fun)
(list (second fun) arg)
(list 'funcall fun arg)))
functions
More information about the Cl-utilities-cvs
mailing list