On May 31, 10:35 am, alux <alu...@googlemail.com> wrote: > [ ] A special form is what can be implemented by a macro.
That depends. My understanding is that a special form is something that is "fundamental" to the language, that the evaluator handles as a special case. That is, they need to be implemented in the compiler/ interpreter itself. However, in practice you can't really tell the difference between a macro and a special form, and in fact some Clojure "special forms" are implemented as macros (on top of a "real" special form that is an implementation detail) > > [ ] Every macro gives a special form. Not really. All macros have the same evaluation semantics (macro expansion). > [ ] Only a macro that doesn't evaluate some of its arguments gives a > special form. I don't think evaluation of arguments matters. > > [ ] A special form is always built in, and cannot be implemented in > the language itself. That depends on your point of view, but in general, yes. > > [ ] Special forms are exactly the things that can be called, but dont > evaluate all of their arguments. (Macros and build-ins, at least for > eager languages.) Special forms are special because the evaluator has separate evaluation rules for each of them. Other than that, they are merely another kind of operator (the others being macros and functions) > > [ ] The concept of special form doesnt have anything to do with > eagerness or lazyness. This is correct. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en