On Thu, May 26, 2016 at 1:29 PM, John Szakmeister <j...@szakmeister.net>
wrote:

>
> Yeah, cond is definitely useful here, but not in general.
>
>
cond *is* useful in general, just not the cond that is built-in to Clojure.

About 5 years ago, Christophe Grand pointed out in a blog post that cond,
augmented with a few extra things (:let, :when, and :when-let) neatly
solved a ton of situations where Clojure often gets inelegantly nested,
i.e., interleavings of conditional tests with local variable definitions,
protection against nil values, etc.

I've been using this better cond ever since, for five years now, routinely,
in my own code.  Once you start using this better cond, you'll never want
to go back.

Here's the implementation, for use in your own code:
https://gist.github.com/Engelberg/9fc1264f938077cf03eee112ebed1768

The most important ingredient here is the ability to put :let into your
cond.  There has been a JIRA issue for this for nearly 7 years (it's a
natural extension to cond, because :let is allowed in for clauses).  Given
the incredible value this feature offers in terms of keeping code nice and
"flat" as opposed to deeply nested/indented, I'm surprised it hasn't yet
made it in to Clojure core.  Maybe soon, though, if enough people
demonstrate that they care.  Go vote for this issue:
http://dev.clojure.org/jira/browse/CLJ-200.

If you don't see how this feature would clean up code, feel free to post an
example that feels ugly with cond, and I'll show you how this improves it.

-- 
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