That was interesting.

One more Q.

What determines whether special forms can be used in functions eg you
can't def a variable in a fn.

Is it there some rule or is it special form specific depending on
(a) the intended use of the special form
(b) the mechanics of getting the compiler to use the special form

On May 31, 9:48 am, Jarkko Oranen <chous...@gmail.com> wrote:
> 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

Reply via email to