Thread-first macro -> will insert list-of-lists as first argument for map, which is definitely not what you expect. Use threading-last ->> instead.
2014-08-30 18:48 GMT+03:00 gvim <gvi...@gmail.com>: > On 30/08/2014 15:07, Alexey Kachayev wrote: > >> for macro expects each pair to be either binding-form/collection-expr or >> one of known modifiers (:let, :when, :while). >> >> Here: >> >> plan (keyword (first l)) >> >> you give a pair of binding-form and keyword (which is really impossible >> to iterate over). >> >> If you meant let-binding for plan, dec, min and long, use :let modifier >> (you can find example in documentation - >> http://clojuredocs.org/clojure_core/clojure.core/for). >> >> > I'm going to have to reduce the resulting list next so I thought to use a > map version of the list comp. but ran into a similar error: > > > (defn calc ....... > (let [ ..... > ....... > list-of-lists (map #(rest (first %)) results)] > (-> list-of-lists > (map #(let [plan (keyword (first %)) > > deg (Integer/parseInt (second %)) > sign (signs (keyword (first (rest (rest %))))) > min (Integer/parseInt (second (rest (rest %)))) > long (Float/parseFloat (last %))] > {plan {:sign sign :deg deg :min min :long long}}))) > > > "Don't know how to create ISeq from: astro.calc$calc$fn__29869" > > Now I'm using a let form but the error is similar. > > gvim > > > > > > > > > > > > > > > > > >> 2014-08-30 16:47 GMT+03:00 gvim <gvi...@gmail.com >> <mailto:gvi...@gmail.com>>: >> >> >> I have a long function which produces `list-of-lists` : >> >> (("Sun" "21" "li" "13" "201.2139410 <tel:201.2139410>") >> >> ("Moon" "11" "le" "21" "131.3457459") >> ......) >> >> .... before entering a list comprehension (simplified for brevity): >> >> (defn calc ....... >> (let [ ..... >> ....... >> list-of-lists (map #(rest (first %)) results)] >> (for [l list-of-lists >> plan (keyword (first l)) >> deg (Integer/parseInt (second l)) >> sign (signs (keyword (first (rest (rest l))))) >> min (Integer/parseInt (second (rest (rest l)))) >> long (Float/parseFloat (last l))] >> {:deg deg :min min :long long}))) >> >> When I call the function I get this error: >> >> IllegalArgumentException Don't know how to create ISeq from: >> clojure.lang.Keyword clojure.lang.RT.seqFrom (RT.java:505) >> >> I've tested all the bindings in the repl and they produce the >> desired data so it seems the final construction of the map is where >> the problem lies. >> >> gvim >> >> >> -- >> 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+unsubscribe@__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+unsubscribe@__googlegroups.com >> <mailto:clojure%2bunsubscr...@googlegroups.com>. >> For more options, visit https://groups.google.com/d/__optout >> <https://groups.google.com/d/optout>. >> >> >> >> >> >> -- >> Kind regards, >> Alexey S. Kachayev, >> CTO at Attendify.com >> ---------- >> http://github.com/kachayev >> http://twitter.com/kachayev >> Skype: kachayev >> Tel: +380-996692092 >> >> -- >> 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 >> <mailto:clojure+unsubscr...@googlegroups.com>. >> >> 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. > -- Kind regards, Alexey S. Kachayev, CTO at Attendify.com ---------- http://github.com/kachayev http://twitter.com/kachayev Skype: kachayev Tel: +380-996692092 -- 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.