Craig, Thanks for your help, it solved my problem
Jacques Craig Brent Ludington wrote: > > On Jun 11, 2004, at 1:06 PM, Jacques B. Siboni wrote: > > > > > Hi all, > > > > Could someone give me a suggestion to avoid evaluation in parameters > > in a > > defun? > > > > > > (defun foo (bbb) > > ... > > ) > > > > (foo bar) > > with this defun and this call bar is evaluated > > > > to avoid evaluation i need to call with (foo 'bar) > > > > What modification to the (defun foo ...) do I have to make to have > > bar not > > evaluated in > > (foo bar) ? > > > > > > The parameters are evaluated before the function is called. There is > nothing > you can do in foo to avoid evaluation of bar. > > The solution is to make foo a macro instead. Something like this: > > * (defun %foo (bar) > (format t "bar is \"~s\"~%" bar)) > > %FOO > * (defmacro foo (bar) > `(%foo (quote ,bar))) > > FOO > * (foo (format t "hello~%")) > bar is "(FORMAT T "hello~%")" > NIL > * > > Macros are covered very well in Paul Graham's On Lisp, > http://www.paulgraham.com/onlisp.html > and they're a fairly advanced topic in Lisp programming. > > Regards, > > Craig Ludington > > -- > Craig Ludington __o > 2446 N. Albany Avenue ---_ \<,_ > Chicago, IL 60647-2602 ---- (_)/ (_) > <[EMAIL PROTECTED]> (773) 252-6911 > GPG public key: http://gnunotunix.org/public-key.txt -- Dr. Jacques B. Siboni mailto:[EMAIL PROTECTED] 8 pass. Charles Albert, F75018 Paris, France Tel. & Fax: 33 (0) 1 42 28 76 78 Home Page: http://www.lutecium.org/jacsib/
