Ticket with patch + explanation: https://dev.clojure.org/jira/browse/CLJ-2210 <https://dev.clojure.org/jira/browse/CLJ-2210>
> On 21 Jul 2017, at 11:06, Nicola Mometto <brobro...@gmail.com> 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 >> <mailto:ja...@booleanknot.com>> 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 <peterhul...@gmail.com >> <mailto:peterhul...@gmail.com>> 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 clojure@googlegroups.com >> <mailto: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 >> <mailto:clojure%2bunsubscr...@googlegroups.com> >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en >> <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 >> <mailto:clojure+unsubscr...@googlegroups.com>. >> For more options, visit https://groups.google.com/d/optout >> <https://groups.google.com/d/optout>. >> >> >> >> -- >> James Reeves >> booleanknot.com <http://booleanknot.com/> >> >> -- >> 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 >> <mailto: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 >> <mailto:clojure+unsubscr...@googlegroups.com> >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en >> <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 >> <mailto:clojure+unsubscr...@googlegroups.com>. >> For more options, visit https://groups.google.com/d/optout >> <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.
signature.asc
Description: Message signed with OpenPGP