My guess is no. It would remove a huge benefit of Clojure, which is
that you can tell, without having to look over the whole codebase,
exactly what a given form does. (my-thing 20 [x y]) invokes my-thing,
a function or macro, with 20 as its first argument, and then a vector
of locals. No need to hunt down x and y, they're in the lexical scope;
no need to guess at the syntax for my-thing. If you can have magical
functions that transparently adjust forms all over the codebase, it
becomes extremely difficult to be sure of what some code is doing,
even without "abuse".

Also, metamacros would be very hard to write *right*. Two of them
might compete over a chunk of code, accidentally falling into infinite
co-recursion. Layering them would be very tricky, too: do you apply
them before or after regular macros? If you try to do both you may end
up compiling forever, alternating between different types of macro
expansions. But suppose you want to write your logging function to
modify all function definitions, and someone has written this code:
(def call-listish (fn [fn elem] (fn [elem] 10)))

How on earth will you know that the first instance of (fn [x] y) is a
function declaration, and the second isn't?

On Sep 15, 11:03 am, Luke VanderHart <luke.vanderh...@gmail.com>
wrote:
> Any thoughts? I grant you, the potential for abuse is huge. Would the
> benefits outweigh it?
>
> Thanks,
> -Luke V.

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