> 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