On Wed, Jan 14, 2009 at 6:07 AM, Rock <rocco.ro...@gmail.com> wrote:
>
[snip]
>
> #^{:ack bar} foo      ; (clojure/with-meta foo {:ack bar})

This is not correct, and a common misunderstanding.

"#^ is not sugar for with-meta. It does not expand into a call to
with- meta. They are not equivalent."

http://groups.google.com/group/clojure/msg/919455504c57659e

> The #() syntax is intended for very short functions being passed as
> arguments. It takes parameters named %, %2, %3, %n ... %&.

Might be worth mentioning that it cannot be nested.

> `meow    ; (quote cat/meow) ...assuming we are in the namespace cat

assming 'meow' is defined in namespace "cat", not that *ns* is
currently "cat"

> If a symbol is non-namespace-qualified and ends with '#', it is
> resolved to a generated symbol with the same name to which '_' and a
> unique id have been appended. e.g. x# will resolve to x_123. All
> references to that symbol within a syntax-quoted expression resolve to
> the same generated symbol.

All references to that symbol within THE SAME syntax-quoted expression...

> For Lists/Vectors/Maps, syntax-quote establishes a template of the
> corresponding data structure. Within the template, unqualified forms
> behave as if recursively syntax-quoted.
>
> `(x1 x2 x3 ... xn)
>
> may be interpreted to mean
>
> (clojure.core/concat [x1] [x2] [x3] ... [xn])
>
> where the brackets are used to indicate a transformation of an xj as
> follows:
>
>    * [form] is interpreted as (clojure.core/list `form), which
> contains a syntax-quoted form that must then be further interpreted.
>
>    * [~form] is interpreted as (clojure.core/list form).
>
>    * [...@form] is interpreted as form.

I'm not quite sure I follow the above section.

Ok, after a bit more pondering, I guess I see what you're saying.
That in your own little notation here, if [x1] is actually [~form], by
which you mean the original expression is `(~myform), then that's the
same as (concat (list myform)) ?  I'm not sure that particular
mechanism for explanation is simple enough to be worth including.

> ``(~~a)

Yikes, I've never tried to do that.

> At this time, Clojure does not allow you to define your own reader
> macros, but this may change in the future.

You're more hopeful on this point than I am. :-)

Thanks for writing this up.
--Chouser

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