Luc, I see you and other people put great points on this subject, that is exactly what I wanted to know about the 'dark corner' in my initial post. Just for your info, I have tried on the modified reader, the following alternatives all works:
Clojure 1.4.0-master-SNAPSHOT user=> (map first [[1] [2]]) (1 2) user=> map(first [[1] [2]]) (1 2) user=> (defmacro mymac [func] (let [args (rest func)] `(- ~@args))) #'user/mymac user=> (mymac (+ 1 2 3)) -4 user=> mymac((+ 1 2 3)) -4 user=> mymac(+(1 2 3)) -4 Thanks, Louis On Dec 27, 1:40 pm, Luc Prefontaine <lprefonta...@softaddicts.ca> wrote: > Louis, obviously there's a problem here, the REPL should return > > user=> (map first [[1] [2]]) > (1 2) > > As for my point about macros, it's not about the calls, it's about macro > processing before > spitting out the code that will be compiled, what would this return ? > > user=> (defmacro mymac [func] > (let [args (rest func)] > `(- ~@args))) > #'user/mymac > > Presently: > > user=> (mymac (+ 1 2 3)) > -4 > > What about (mymac + (1 2 3)) ? Would + (1 2 3) be considered as one argument > ? Why ? How the compiler achieve this grouping ? > If the macro argument involves a list ([&body] being a common example) how do > you decide what is a real > list versus a call using your new syntax in the variable list of arguments ? > > If you cannot deal with this and have to force (mymac (+ 1 2 3)) when a macro > is involved then what's the use > of this new syntax ? > > What about embedded calls involving a mix of fns and macros ? > I cannot see people having to dig to find out if some of these calls are > macros versus fns and change the shape according to > what is being called. > > You missed the point that I made about the fact that code is data and can be > modified accordingly either through macros > or runtime evaluations. > > Luc > > On Wed, 28 Dec 2011 01:59:12 +0800 > > Ambrose Bonnaire-Sergeant <abonnaireserge...@gmail.com> wrote: > > On Wed, Dec 28, 2011 at 1:46 AM, Louis Yu Lu <louisy...@gmail.com> > > wrote: > > > > The proposed syntax sugar does not break the existing code > > > clojure.core=> map(first [[1] [2]]) > > #<core$map clojure.core$map@5ec3d2> > > [1] > > > Ambrose > > -- > Luc P. > > ================ > The rabid Muppet -- 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