On Fri, Oct 23, 2009 at 3:16 PM, Howard Lewis Ship <hls...@gmail.com> wrote: > > I like to try and keep my level of nesting under control, and this > often involves hiding or re-structuring the let macro. The for macro > can implicitly assemble a let macro for you, but with a limitation > that the :let clause can't be first: > > 1:5 user=> (for [:let [z [:foo :bar]] x z] (name x)) > java.lang.IllegalStateException: Can't pop empty vector (repl-1:5) > 1:6 user=> (for [x [:foo :bar] :let [z (name x)]] z) > ("foo" "bar") > 1:7 user=> > > Is this limitation intentional? Could the error message be improved?
It's not an intentional limitation. One hint of this is that :let, :while, and :when all work perfectly fine at the beginning of a doseq. Improving the error message would be easy. On the other hand, a patch to support them at the beginning of a 'for' should be possible. I think it might be worthwhile, particulary for macros that generate 'for' forms. The machinery inside a 'for' expansion is hard to do yourself. Rich, would you consider a patch to support this? --Chouser --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---