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.

Reply via email to