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


I've just been reading Richard's draft and the absence of NULL? from
the list of predicates for disjoint types struck me as odd.

I vaguely recall having some discussion on the topic, but I can't
recall the substance.

Furthermore, NULL? is listed as a library procedure, rather than a
primitive.  This leads me to believe that the implied implementation

    (define (null? obj)
      (and (not (boolean? obj))
	   (not (symbol? obj))
	   (not (char? obj))
	   (not (vector? obj))
	   (not (procedure? obj))
	   (not (pair? obj))
	   (not (number? obj))
	   (not (string? obj))
	   (not (port? obj))))

This strikes me as somewhat ugly (in its asymmetry -- why pick on the
empty list) and potentially bad.

What was the nature of the objection to placing NULL? in the list of
disjoint types?  Is tagging NULL? as a library procedure more than a
cute hack given the implied closed universe of the report (which is a
bad implication in my mind)?