I’m guessing that Matz wanted conceptual simplicity of “truthiness” as such – the only “false” values are false
and nil
. Period.
Using just false
would be the cleanest but there is understandable need for including nil
. To include the integer zero as a special case might open the mental floodgates of questioning truthiness of other types. What about strings, is ""
false? And arrays, is []
false? And hashes, is {}
false? Ad insanitum (see JavaScript)…