On Wed, Feb 27, 2008 at 8:29 PM, Ozzi <[EMAIL PROTECTED]> wrote: > > Three that I can think of: > > > > 1) It would make alist representations ugly: > > (query "select foo, NULL as bar, baz from stuff") => > > ((foo . 1) (bar) (baz . "a string")) > > This doesn't bother me. > > > 2) It is not a disjoint type. (list? '()) => #t. That's bad. > > > > 3) As a special case of (2), some databases have array-type columns. > > An empty list may be a valid column value. > > All right, there's the big problem. > > How about keeping '() for sql NULL, and using vectors to represent array-type > columns?
Vectors are currently used in the Postgres egg to represent date-time values. Not saying it's good, but there it is. (BTW, a dbapi needs consistent date/time support too...) In Common Lisp, NIL is the same as '(), and both mean "false". In Scheme we have an explicit #f. For the same reasons we should have an explicit #<sql-null>. It is important that (sql-null? (sql-null)) is #t, and (sql-null? anything-else) is #f. > Since SQL NULL values are common, I really like the simple null? test. It's > intuitive. How is (sql-null?) harder or less intuitive? > On the other hand, I didn't even know array-type columns existed until > tonight. > I'd prefer to go with something slightly less intuitive for representing > them if > it will let us use '() for NULL. ...and perhaps we should use '() for #f as well? ;-) Graham _______________________________________________ Chicken-users mailing list Chicken-users@nongnu.org http://lists.nongnu.org/mailman/listinfo/chicken-users