Common Lisp has a really well thought approach to parameter lambda lists. 
If you feel strongly about resolving this ambiguity and enforcing 
consistency around sequential binding in the destructuring syntax, perhaps 
that would be a good place to root a design you can flesh out in Jira. 
Here's a resource you might find interesting as a starting 
point: http://www.lispworks.com/documentation/HyperSpec/Body/03_dad.htm

On Thursday, December 11, 2014 11:55:36 PM UTC-5, Michael Blume wrote:
>
> Yep, I spent some time playing with the macro and the macroexpand. It 
> looks like
>
> a) it only works if the dependent keys come *before* the keys they depend 
> on (ie the opposite of how you'd order, say, defs)
>
> b) this ordering arises entirely from the seq ordering of 
> PersistentArrayMap (keys are stuck into the map here 
> https://github.com/clojure/clojure/blob/clojure-1.6.0/src/clj/clojure/core.clj#L4083
>  
> and taken out again here 
> https://github.com/clojure/clojure/blob/clojure-1.6.0/src/clj/clojure/core.clj#L4090
> )
>
> The latter makes it pretty clear that this is accidental behavior and, as 
> you say, shouldn't be relied on -- in particular, if you have more than 
> about 8 keys, you spill over to a PersistentHashMap and get everything in a 
> random order and it almost certainly fails.
>
> The trouble is this behavior is already used by ring-middleware-format, 
> which then fails to compile if clojure uses a different implementation for 
> small maps.
>
> I'm wondering if given the brittleness of this behavior we should make 
> sure it can't be used in future versions of clojure.
>
> On Thu Dec 11 2014 at 6:56:22 PM <adrian...@mail.yu.edu <javascript:>> 
> wrote:
>
>> Whenever you want to get insight in how a macro is rewriting your code, 
>> try evaluating your form quoted with macroexpand. 
>>
>> Here's a gist with the macroexpansion each form. 
>>
>> https://gist.github.com/aamedina/542b084d31d4e0c9a7a8
>>
>> Hopefully the expansion makes things clear! 
>>
>> On Thursday, December 11, 2014 6:11:59 PM UTC-5, Michael Blume wrote:
>>>
>>> If I make my defaults on a :keys :or destructuring depend on the values 
>>> of other keys, I *can* get a compile-time error, depending on what order I 
>>> give the keys https://gist.github.com/MichaelBlume/4891dafdd31f0dcbc727
>>>
>>> Is this on-spec behavior? Should the former be allowed but not the 
>>> latter? Should both be allowed? Should neither?
>>>
>>  -- 
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clo...@googlegroups.com 
>> <javascript:>
>> Note that posts from new members are moderated - please be patient with 
>> your first post.
>> To unsubscribe from this group, send email to
>> clojure+u...@googlegroups.com <javascript:>
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to clojure+u...@googlegroups.com <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
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
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to