But a Maybe/Nothing will short-circuit the whole flow where cond-let won't? 


On Thursday, 4 October 2018 08:38:05 UTC-7, Moe Aboulkheir wrote:
>
> See https://funcool.github.io/cats/latest/#mlet for something closer to 
> home, in the monadic vein.
>
>
> On Thu, Oct 4, 2018 at 4:10 PM Gary Trakhman <gary.t...@gmail.com 
> <javascript:>> wrote:
>
>> These are all just sugar over monadic bind, right?
>>
>> Here's one way to do it in the ocaml alternate universe:
>> https://github.com/janestreet/ppx_let#syntactic-forms-and-actual-rewriting
>>
>> But it can be made to work for async or options or whatever, too.
>>
>> We can put the async helpers in the same bucket: 
>> https://github.com/ztellman/manifold/blob/master/docs/deferred.md#let-flow
>>
>> The general idea is turning function application into something that 
>> looks less nested.
>>
>> On Wed, Oct 3, 2018 at 10:22 PM Mark Engelberg <mark.en...@gmail.com 
>> <javascript:>> wrote:
>>
>>> This looks like a case of "convergent evolution".
>>>
>>> Having the ability to do a :let in the middle of a cond feels like one 
>>> of those things that *should* be in the core language, so if it's not 
>>> in there, a bunch of people are naturally going to arrive at the same 
>>> solution and make it happen in their own utility libraries.  A bunch of us 
>>> Clojure programmers from the early 1.0 days had been privately passing 
>>> around and using a "cond that supports :let bindings" macro for years.  The 
>>> first time I saw the macro was in a blog post by Christophe Grand. I really 
>>> hoped it would make it into Clojure proper -- other functional languages 
>>> like Racket and F# support ways to bind local variables with "clearer, more 
>>> linear code, that doesn't make a march for the right margin", as Howard 
>>> Lewis Ship put it.  But after several years had passed without any 
>>> indication that CLJ-200 was ever going to be addressed, I eventually made 
>>> the improved cond macro into a clojars library.
>>>
>>> walmartlabs' cond-let addresses the most important thing (let), which is 
>>> the critical piece of functionality that feels like the most natural, 
>>> needed addition to the language.  better-cond's :let syntax is identical.  
>>> But as us old-school Clojurians passed around the "better cond" macro over 
>>> the years, it grew in functionality.  So in better-cond, I included the 
>>> other little improvements that had accumulated over time, which I had found 
>>> useful.  So better-cond also supports :when, :when-let, and :do (and will 
>>> soon have :when-some).  :let is the only piece that I felt really belonged 
>>> in the core language's cond, and if CLJ-200 had made it into the core 
>>> language, I would have been content to just use Clojure's own cond.  But 
>>> once I realized I was going to need a library to achieve the much-needed 
>>> :let inside of cond, I figured I might as well use that library to include 
>>> the other convenient cond additions as well.  So better-cond is a superset 
>>> of cond-let's functionality, with support for :let plus a few bonuses.
>>>
>>> Use whichever one strikes your fancy.  cond-let is perfect if all you 
>>> care about is adding :let to your cond.  If you want to experiment with 
>>> some of the other features beyond :let, you could use better-cond and see 
>>> what you think.
>>>
>>> Either way, I strongly encourage you to use one of these two libraries 
>>> so you can start using :let inside your cond.  I agree fully with Howard 
>>> Lewis Ship that it results in clearer code.  Try either library which 
>>> supports this -- it will change your life!
>>>
>>>
>>> On Wed, Oct 3, 2018 at 5:05 PM Matching Socks <phill...@gmail.com 
>>> <javascript:>> wrote:
>>>
>>>> Is this a refinement of Mark Engelberg's "better-cond", or an 
>>>> alternative approach?  
>>>>
>>>> I have not used better-cond myself, but it starts here:  
>>>> https://dev.clojure.org/jira/browse/CLJ-200. 
>>>>
>>>> -- 
>>>> 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 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