Nicola,
Wow, I certainly didn't expect to wake up to a patch, nice work. I think I 
get the underlying problem, seems like there might be other cases where 
this comes up.

Thanks also to others who dared to drop my code into their REPLs to 
confirm, I am constantly impressed by the Clojure community.

Cheers,
Milt

On Friday, July 21, 2017 at 6:32:08 AM UTC-4, Nicola Mometto wrote:
>
> Ticket with patch + explanation: 
> https://dev.clojure.org/jira/browse/CLJ-2210
>
> On 21 Jul 2017, at 11:06, Nicola Mometto <brob...@gmail.com <javascript:>> 
> wrote:
>
> I have a patch that fixes this, will open a ticket later today.
>
> On 21 Jul 2017, at 10:07, James Reeves <ja...@booleanknot.com 
> <javascript:>> wrote:
>
> I can also confirm, tested on Clojure 1.8.0. The macro doesn't seem to 
> take long at all; it's the expanded code that takes a significant time to 
> compile.
>
> On 21 July 2017 at 10:56, Peter Hull <peter...@gmail.com <javascript:>> 
> wrote:
>
>> On Friday, 21 July 2017 00:35:00 UTC+1, Milt Reder wrote:
>>>
>>> Here's a simplified example:
>>>
>>> I can confirm that pasting that defn into a CIDER repl does take a long 
>> time before the prompt comes back. I tried doing a "macro expand all" and 
>> it was pretty much instantaneous. The resulting expansion is quite long but 
>> not unreasonable (see below). Beyond that, I'm not sure how to analyse what 
>> Clojure's doing or time it. I'm using 1.9 alpha by the way.
>> Pete
>>
>> (def wat
>>  (fn*
>>    ([& p__9335]
>>      (let*
>>        [map__9336
>>         p__9335
>>         map__9336
>>         (if (seq? map__9336)
>>           (. clojure.lang.PersistentHashMap create (seq map__9336))
>>           map__9336)
>>         a
>>         (get map__9336 :a)
>>         b
>>         (get map__9336 :b)
>>         c
>>         (get map__9336 :c)
>>         d
>>         (get map__9336 :d)
>>         e
>>         (get map__9336 :e)
>>         f
>>         (get map__9336 :f)
>>         map-0
>>         (get map__9336 :map-0)
>>         map-1
>>         (get map__9336 :map-1)
>>         map-2
>>         (get map__9336 :map-2)]
>>        (let*
>>          [G__9337
>>           "foo"
>>           G__9337
>>           (if a (str G__9337 a) G__9337)
>>           G__9337
>>           (if b (str G__9337 b) G__9337)
>>           G__9337
>>           (if c (str G__9337 c) G__9337)
>>           G__9337
>>           (if d (str G__9337 d) G__9337)
>>           G__9337
>>           (if e (str G__9337 e) G__9337)
>>           G__9337
>>           (if f (str G__9337 f) G__9337)
>>           G__9337
>>           (if map-0
>>             (let*
>>               [G__9338
>>                G__9337
>>                G__9338
>>                (if (:a map-0) (str G__9338 (:a map-0)) G__9338)
>>                G__9338
>>                (if (:b map-0) (str G__9338 (:b map-0)) G__9338)
>>                G__9338
>>                (if (:c map-0) (str G__9338 (:c map-0)) G__9338)]
>>               (if (:d map-0) (str G__9338 (:d map-0)) G__9338))
>>             G__9337)
>>           G__9337
>>           (if map-1
>>             (let*
>>               [G__9339
>>                G__9337
>>                G__9339
>>                (if (:a map-1) (str G__9339 (:a map-1)) G__9339)
>>                G__9339
>>                (if (:b map-1) (str G__9339 (:b map-1)) G__9339)
>>                G__9339
>>                (if (:c map-1) (str G__9339 (:c map-1)) G__9339)]
>>               (if (:d map-1) (str G__9339 (:d map-1)) G__9339))
>>             G__9337)]
>>          (if map-2
>>            (let*
>>              [G__9340
>>               G__9337
>>               G__9340
>>               (if (:a map-2) (str G__9340 (:a map-2)) G__9340)
>>               G__9340
>>               (if (:b map-2) (str G__9340 (:b map-2)) G__9340)
>>               G__9340
>>               (if (:c map-2) (str G__9340 (:c map-2)) G__9340)]
>>              (if (:d map-2) (str G__9340 (:d map-2)) G__9340))
>>            G__9337))))))
>>
>>
>>
>> -- 
>> 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.
>>
>
>
>
> -- 
> James Reeves
> booleanknot.com
>
> -- 
> 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