Andy Wingo <wi...@pobox.com> writes: > On Mon 29 Jun 2009 23:44, Neil Jerram <n...@ossau.uklinux.net> writes: > >> Andy Wingo <wi...@pobox.com> writes: >> >>> scheme@(guile-user)> (if %nil 1 2) >>> 1 >>> >>> #define scm_is_false(x) (scm_is_eq ((x), SCM_BOOL_F) || SCM_NILP (x)) > >> Seems wrong to me. In Scheme #f should be the only false value. >> What's the argument for %nil being false in Scheme code? > > I thought the original plan regarding %nil and #f and '() was that %nil > wasn't supposed to be seen normally from Scheme, and for that reason > (and (null? %nil) (not %nil)) would not be a problem. > > Guile has treated %nil as false for quite some time: > > scheme@(guile-user)> ,o interp #t > scheme@(guile-user)> (if %nil 1 2) > $1 = 2
I'm sorry... you're completely right. Brain storm on my part. But then I don't understand the cause of your suggestion. Is it that master has somehow regressed, so as to cause (if %nil 1 2) => 1 ? Neil