On Fri, Jan 25, 2008 at 11:28:07PM -0800, [EMAIL PROTECTED] wrote:

Call me crazy but wouldn't the empty list, (), make a more elegant
FALSE object for Scheme than "#f"?

They wanted false to be distinct from the empty list.  Common lisp does use
the empty list as the only false value.  Scheme as both the empty list and
a special #f false object.

Scheme has special objects #f and #t that are just booleans.  This allows
them to have the 'boolean?' predicate to test if something is boolean.
Common Lisp has the special object NIL (same as ()), that is the only false
object, but it is also the end of lisp.  The 'T' value in common lisp also
has some extra unusual properties such as being the parent class of
everything.  This means that everything is of type 'T', including 'T',
whereas nothing is of type NIL, including NIL.

There are advantages of either approach.  Common lisp has a more
complicated type system and overloads meaning of some things a bit more.
Scheme tends to like to keep things more discrete.

David

--
[email protected]
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-lpsg

Reply via email to