[racket-dev] #true and #false
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.