[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


    I am confused by Rozas' arguments.  Can one really use any object one
    damn well pleases as the empty list?  I thought implementations were
    constrained to use a unique object, which could be #f but could not be
    #t, 0, etc.  Given this strong constraint, it seems we might as well
    distinguish '() from #f.  Unless someone wishes to argue that this
    remaining ambiguity is inherently useful...

Yet another point where you and I have different points of view.  I
don't believe that disjointness is necessary, interesting, or
aesthetically pleasing (obviously to me).  Although it is true that
the reports currently explicitly allow #f to be '(), they do not
preclude '() from being any other object, since null? is not in the
list of disjoint type predicates.  Thus it is legal for '() to be a
pair? or a number?, although it can't be both.  This is precisely the
nature of the requested modification to the draft standard with which
I disagree.

I'm actually somewhat surprised by your position on this.  I had
viewed you as one of the few other people in the community that was
worried about lists being so ingrained in the language.

Assuming that at some point in the future we were able to disentangle
application (apply and rest parameters) from lists, lists (including
'()) could become library routines, not even present by default in
some implementations.  

The requirement that '() be disjoint from all other objects precludes
portable implementations of the list routines that "patch" the
reader to add '(), since there is no portable way of creating disjoint

The goal towards which scheme should grow (in my "distorted"
aesthetics) is to have very few built-in procedures and data
types/structures, but have good enough abstraction facilities that
even lists and numbers can be implemented portably and efficiently.
Thus adding to the disjointness of types only forces more and more
"extraneous objects" to exist in my ideal dialect, complicating it.