On Jan 27, 2:32 pm, Raoul Duke <rao...@gmail.com> wrote:
>
> ok, thanks, i will try to internalize that :-)
>
> i am not somebody who can point to languages i have defined and
> implemented, so i don't have any cred, but i think the requirement
> that the programmer know such details (like i have to know what is or
> is not a macro in the system at all times) is less than ideal for the
> end-user-programmer.
>
> sincerely.

In general, if you see a form that looks like it's a special language
and wouldn't evaluate its
contents before executing the form then it's a macro.

With clojure.core/ns, you can reason that in the form (ns foo), ns
must be a macro because otherwise
the evaluation of foo would cause an error (or in the case you had
defined a foo, you'd get a namespace named after
the contents of foo, not the symbol foo).

You can always check by examining metadata.

(meta (var clojure.core/ns))
;; or more succinctly,
(meta #'clojure.core/ns)

You'll see a key-value pair of {:macro true} in the metadata map.

-- 
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