On 05/25/2011 06:45 AM, Martin Simmons wrote:
It seems like an interesting extension of the term "Lisp-2" -- as well as just specifying different namespaces, the proposal is to have a different evaluator for the car of the form. In fact, CL already has one, but it is very limited.
If that evaluator allows macro forms, then a macro that expands to a symbol should work as if the symbol was used directly. If you use such a macro with (funcall (return-something) ...), then you are using the regular evaluator for the macro form.
Well, the concrete interpreter I am working on uses a form of fexprs as the fundamental operators in the language. There wouldn't be macro 'phase' as such to consider. For ((returns-something) arg ...) to work like (funcall (returns-something) arg ...) the evaluator, in addition to evaluating compound expressions that occur in the car of a form, would need to coerce those expressions that evaluate to symbols.
In a purely Common Lisp context, if the expression in the car is "macros all the way down", you could make a case that form as a whole should be evaluated in a macro context. That would be interesting to debug as well.
Matt