[racket-dev] #true and #false

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Sat Oct 9 00:09:35 EDT 2010

At Fri, 08 Oct 2010 23:10:05 -0400, David Van Horn wrote:
> On 10/8/10 9:12 PM, Matthew Flatt wrote:
> > This proposal originates with the need to fix a problem in the HtDP
> > teaching languages. The HtDP teaching languages currently use `true'
> > and `false' for true and false, and the HtDP languages are configured
> > to print booleans as `true' and `false'. That doesn't work with quoted
> > lists. For example,
> >
> >    '(true false)
> >
> > is a list of symbols, not a list of booleans.
> 
> What about '(empty)?  Seems like the same issue.

Yes, so we are also looking at how to move away from `empty'.

The answer isn't `#empty' --- at least not without breaking the
correspondence between an expression E and `eval' of a `quote'd E. For
example, we would want `#empty' by itself to mean the empty list, and
quoting `#empty' should also mean the empty list, but `eval'ing the
empty list should be an empty application, not the empty list.

Maybe we have to use '() for the empty list, even in the teaching
languages.



Posted on the dev mailing list.