I agree - I always use the second form. Generally I find that I often need
a let-block for each branch of the if, so I nearly always avoid the need
for an explicit 'do'.

On 7 October 2014 14:54, <adrian.med...@mail.yu.edu> wrote:

> I agree with James. The first can be tempting when you're doing side
> effect heavy code (which should probably cause you to take a double take on
> how you got to this point anyhow) but the most glaring issue that is all
> too easy to overlook is that they aren't actually equivalent expressions.
> Even with side effecting expressions, using an if here reinforces the
> notion that you are conditionally returning one of two values, not
> conditionally executing two different blocks of statements.
>
> On Monday, October 6, 2014 9:49:33 PM UTC-4, James Reeves wrote:
>>
>> The latter is what I'd consider to be the correct approach.
>>
>> If the do blocks become unwieldy, you can factor them out into functions.
>>
>> - James
>>
>> On 7 October 2014 02:16, Mike Fikes <mikef...@gmail.com> wrote:
>>
>>> Here's a style question: If you have to conditionally do one set of side
>>> effects or another set, is your preference to use when and when-not, or
>>> an if containing do blocks? Or perhaps some other construct?
>>>
>>> In terms of a concrete example:
>>>
>>> (let [boolean-value (some-predicate?)]
>>>   (when boolean-value
>>>     (do-alpha)
>>>     (do-beta))
>>>   (when-not boolean-value
>>>     (do-gamma)
>>>     (do-delta)))
>>>
>>> or:
>>>
>>> (if (some-predicate?)
>>>   (do
>>>     (do-alpha)
>>>     (do-beta))
>>>   (do
>>>     (do-gamma)
>>>     (do-delta)))
>>>
>>> --
>>> 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
>>> 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
>>> 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.
>>> 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.
>

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