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

Reply via email to