as-> <https://clojuredocs.org/clojure.core/as-%3E> is an alternative to using Tupelo's it-> as-> allows you to use a contextually meaningful identifier vs using 'it.
On Thursday, October 27, 2016 at 12:39:27 PM UTC-4, Alan Thompson wrote: > > I almost never use either the `comp` or the `partial` functions. I think > it is clearer to either compose the functions like Gary showed, or to use a > threading macro (my favorite is the `it->` macro from the Tupelo library > <https://github.com/cloojure/tupelo#literate-threading-macro>). > Alan > > On Thu, Oct 27, 2016 at 8:00 AM, Gary Trakhman <gary.t...@gmail.com > <javascript:>> wrote: > >> Comp does its work at run-time, so you have to call functions that return >> functions. Threading macros do their work at compile-time, so your form >> literally compiles to this: >> >> >> > (clojure.walk/macroexpand-all '(->> (str/split s #"(?<=[a-z])(?=[A-Z])") >> (map str/lower-case) >> (interpose \-) >> str/join >> keyword)) >> (keyword >> (str/join >> (interpose \- >> (map str/lower-case >> (str/split s #"(?<=[a-z])(?=[A-Z])"))))) >> >> >> On Thu, Oct 27, 2016 at 10:56 AM JHacks <jhack...@gmail.com <javascript:>> >> wrote: >> >>> I have some confusion about how the function `comp` works, especially as >>> compared to the threading macro `->>`. >>> >>> From the book *Clojure Programming* (pages 70-71 of Chapter 2: Functional >>> Programming), the following two functions are described as functionally >>> equivalent: >>> >>> (def camel->keyword >>> (comp keyword >>> str/join >>> (partial interpose \-) >>> (partial map str/lower-case) >>> #(str/split % #"(?<=[a-z])(?=[A-Z])"))) >>> >>> (defn camel->keyword* >>> [s] >>> (->> (str/split s #"(?<=[a-z])(?=[A-Z])") >>> (map str/lower-case) >>> (interpose \-) >>> str/join >>> keyword)) >>> >>> Why does the first function, `camel->keyword`, need to use `partial` >>> with the >>> `map` and `interpose` functions? The second function, `camel->keyword*`, >>> does >>> not need to use `partial`. >>> >>> -- >>> 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 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.