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/

Reply via email to