No sorry me because my examples should be better. I use the command line but yes it's still "top level" and this is not enough to test this, right?
But here; OK, if 'fm is a function, the behaviour is "like in Arc". But if it's a macro, it seems to behave "like I want". Or is my example not good? (Sorry I'm really tired here, I can't even realize this :-D).
I mean, don't you think 'myeach as a CL macro would work?
> (mac ech args `(each _ ,@args))
Actually I'm currently using that. I'm just using the name 'each_ instead and define it using the macro currying stuff of twilightsentry (see id=10139, very interesting).
arc> (= each_ (>_ each '_))
But still you know, one extra character ('_') to type... :-D
> But if it's a macro, it seems to behave "like I want". Or is my example not good?
Shall I wait until tomorrow to reply so that you can get some sleep? :)
Try
((lambda () (fm)))
you can see that only if (fm) is invoked directly from the top level will the macro expansion be avoided.
> I mean, don't you think 'myeach as a CL macro would work?
What you need, in CL or in Arc, is a way to tell if a variable is defined at macro expansion time. Suppose Arc could tell you at macro expansion time if a variable was defined. Then you could say