[Openmcl-devel] macro, symbol value and declare special

Pascal J. Bourguignon pjb at informatimago.com
Wed Dec 8 20:54:46 PST 2010


Pascal Costanza <pc at p-cos.net> writes:

> On 8 Dec 2010, at 23:47, Taoufik Dachraoui wrote:
>
>> Hi
>> 
>> I run the following test
>> 
>> ? (defmacro m1 (a) `,(let ((i a)) (declare (special i)) (symbol-value 'i)))
>> M1
>> ? (m1 3)
>> 3
>> ? (let ((k 45)) (m1 k))
>> 45
>> ? (defmacro m1 (a) `,(let ((i a)) (declare (special i)) (1+ (symbol-value 'i))))
>> M1
>> ? (m1 3)
>> 4
>> ? (let ((k 45)) (m1 k))
>> return  "value K is not of the expected type NUMBER."
>> 
>> Could someone please explain to me this?
>

> Did you already walk through Common Lisp tutorials in more detail,
> like Peter Seibel's Practical Common Lisp, Peter Norvig's Paradigms of
> Artificial Intelligence Programming, or Paul Graham's On Lisp? If not,
> it's strongly recommended to do that first, because it seems you're
> lacking some fundamental knowledge about the use of macros.

Or:
          Casting Spels in Lisp
          Conrad Barski, M.D.
          http://www.lisperati.com/casting.html

-- 
__Pascal Bourguignon__                     http://www.informatimago.com/
A bad day in () is better than a good day in {}.




More information about the Openmcl-devel mailing list