[plt-scheme] required else for if ?
On Sep 6, 2009, at 3:43 PM, Matthias Felleisen wrote:
>
> In 1991 I asked Bob Hieb (Kent's Chez Scheme buddy then, and my co-
> researcher on theoretical stuff) what the most frequent annoying bug
> was in the code. He ranked an accidentally omitted else branch among
> the top three. Indeed, he said that because of this, they had agreed
> to use WHEN and UNLESS exclusively for cases when they needed a one-
> armed IF and that they considered all one-armed uses as a bug or a
> legacy issue (which they corrected as soon as they touched a file).
>
> We have chosen to codify their restriction. It's a minor
> inconvenience that buys a good deal of clarity.
A much more evil manifestation of this occurs when you have a one-
armed if, e.g.:
(if button-is-pressed?
(launch-missiles))
... and it's not working, so you stick a printf in there:
(if button-is-pressed?
(printf "x = ~v\n" x)
(launch-missiles))
And suddenly the missiles launch without the button being pressed.
Stupid, yes, but I've spent at least one late night tracking down this
bug.
John
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2484 bytes
Desc: not available
URL: <http://lists.racket-lang.org/users/archive/attachments/20090908/4983bf84/attachment.p7s>