Sacha,
You can to force evaluation of *indent* while preserving the lazyness
of the code that uses *indent*:
(with-indent
(print *indent*)
(let [ind *indent*]
(lazy-cons ind (cons ind nil))))
If this idiom is useful often enough there could be a macro for it. Or
maybe there already is. :-) Rich?
Stuart
> Here is a little test :
>
> (def *indent* 0)
>
> (defmacro with-indent [& body]
> `(binding [*indent* (+ *indent* 1)]
> [EMAIL PROTECTED]))
>
> => (with-indent (print *indent*) (lazy-cons *indent* (cons *indent*
> nil)))
> 1(0 0)
>
> I somehow expected to have the special variable value lexically bound
> at evaluation time.
> So I guess this makes perfect sense from the implementor point of
> view. But do we not loose much of the added value of special variables
> this way ? If this is intended, what's the rationale ?
>
> Thanks,
> Sacha
>
> >
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---