libera/#lisp - IRC Chatlog
Search
19:18:47
andreyorst
what's the reasoning for using `when` instead of `if` for only one form in the body? Like (when (foo) (bar)) vs (if (foo) (bar))
19:23:32
mfiano
They have different indentation, and convey different intentions to the reader of your code.
19:27:05
andreyorst
by that logic I should write (if t 10) but you've said that I should never use IF with ouly a THEN clause
19:28:12
minion
andreyorst: look at luv: Tutorial on Good Lisp Programming Style: http://www.norvig.com/luv-slides.pdf
19:29:43
andreyorst
but these conventions disagree in the upper example, no? There's no side effects so I should not use WHEN, yet only a single branch, so I should not use IF
19:31:05
andreyorst
this is different from using COND when there are only two branches, one of which is always T, it's a bad style. But with WHEN/IF this isn't so clear cut to me
19:37:40
andreyorst
mfiano: the page 13 in the pdf link you've mentioned doesn't have anything about side effects in WHEN, only cares about the amount of branches
19:40:31
mfiano
use `if', `and', and `or' when the return value is significant (i.e., it is used; it makes a difference to the behavior).
19:41:15
mfiano
People that read WHEN or UNLESS don't expect the return value to be used, so you may confuse them.
19:42:05
famicom_guy
I disagree with this, I frequently use `when' and `unless' in macros quite frequently, and there are 6 people in my team, so it's baffling to hear that people might find this confusing. Nobody has complained about it yet.
19:43:25
andreyorst
clhs doesn't have about side effecting or not using a value either, it explicitly says that values are returned actually
19:43:37
mfiano
People on your team are likely writers. If your code is to be read by a wider Lisp audience, this matters more.
19:45:00
andreyorst
then again, if when shoudl not be used for returning a value, and if should never be used with a single branch do you really write (if test then nil) in binding forms?