When compiling a compiler macro, the &whole form seems to be referenced even if
it is not:
----(s.lisp)------------------------------------------------------------
(DEFUN IMPLODE-STRING (CHAR-SEQ)
"
RETURN: A new string containing the characters in the sequence CHAR-SEQ.
"
(MAP 'STRING (FUNCTION CHARACTER) CHAR-SEQ))
(DEFINE-COMPILER-MACRO IMPLODE-STRING (&WHOLE FORM CHAR-SEQ)
"
RETURN: An optimized form for compiled code.
NOTE: Unfortunately clisp does to take into account compiler-macros
even when compiling...
"
(DECLARE (IGNORE FORM))
(WITH-GENSYMS (SEQ)
`(LET ((,SEQ ,CHAR-SEQ))
(TYPECASE ,SEQ
(STRING (COPY-SEQ ,SEQ))
(LIST (DO ((RESULT (MAKE-STRING (LENGTH ,SEQ)))
(I 0 (1+ I))
(SEQU ,SEQ (CDR SEQU)))
((NULL SEQU) RESULT)
(SETF (CHAR RESULT I) (CHARACTER (CAR SEQU)))))
(OTHERWISE (DO ((RESULT (MAKE-STRING (LENGTH ,SEQ)))
(I 0 (1+ I))
(MAX (LENGTH ,SEQ)))
((>= I MAX) RESULT)
(SETF (CHAR RESULT I) (CHARACTER (AREF ,SEQ I)))))) )))
------------------------------------------------------------------------
CL-USER> (compile-file "/tmp/s.lisp")
;;;
;;; Compiling /tmp/s.lisp.
;;; OPTIMIZE levels: Safety=2, Space=0, Speed=3, Debug=3
;;;
;;; Compiling (DEFUN IMPLODE-STRING ...).
;;; Warning:
;;; in file s.lisp, position 158
;;; at (DEFINE-COMPILER-MACRO IMPLODE-STRING ...)
;;; ! Variable FORM, declared as IGNORE, found in a lisp form.
;;; End of Pass 1.
;;; Emitting code for IMPLODE-STRING.
;;; Emitting code for IMPLODE-STRING.
;;; Note:
;;; Invoking external command:
;;; gcc "-I/usr/local/include/" -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -g -O2
-fPIC -D_THREAD_SAFE -Dlinux -O2 -w -c "/tmp/s.c" -o "/tmp/s.o"
;;;
;;; Note:
;;; Invoking external command:
;;; gcc -o "/tmp/s.fas" -L"/usr/local/lib/" "/tmp/s.o"
"-Wl,--rpath,/usr/local/lib/" -shared -lffi -lecl -lgmp -lpthread -ldl -lm
;;;
;;; Finished compiling /tmp/s.lisp.
;;;
#P"/tmp/s.fas"
T
NIL
CL-USER>
--
__Pascal Bourguignon__ http://www.informatimago.com/
------------------------------------------------------------------------------
Sell apps to millions through the Intel(R) Atom(Tm) Developer Program
Be part of this innovative community and reach millions of netbook users
worldwide. Take advantage of special opportunities to increase revenue and
speed time-to-market. Join now, and jumpstart your future.
http://p.sf.net/sfu/intel-atom-d2d
_______________________________________________
Ecls-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ecls-list