libera/#commonlisp - IRC Chatlog
Search
0:06:21
aeth
took me a second to parse that because I thought you were talking about a (SQL-using relational) database migration
0:08:18
aeth
Fortunately, Common Lisp could avoid most issues with renaming by simply versioning the COMMON-LISP (nickname CL) package (as long as it doesn't touch the reader or a few other things). Although I guess library interop with other libraries could suffer.
0:08:55
aeth
The only problem is that that becomes a user-effort rather than a core-language-effort and users tend to... make radical changes just to make radical changes. Thus, not really getting anyone to use it.
0:09:06
kakuhen
eh... coming from a mathematics background, I don't generalized booleans to be all that confusing in Common Lisp. The only object of type NULL is NIL, and NIL can represent an empty list too, so it's pretty intuitive to me that *type* NIL is "empty" and hence a subtype of everything else.
0:09:33
masinter
use URLs for package full-names on a per-file basis, and at least you'll hve more resilience
0:10:39
aeth
kakuhen: NIL is either false or an empty list (or both, I guess) depending on the context. NIL the type is the type of nothing. NULL the type is the type of NIL, which isn't a null in things like JSON, SQL, etc., that you might interact with (unless you choose to represent it as null instead of as false when converting it, which is probably a mistake).
0:11:29
aeth
masinter: the only reason I don't do that is because nobody puts hyphens in domain names but everybody puts hyphens in project names... So if I did that everywhere, it would double my domain costs.
0:12:14
aeth
"com.example" will actually show up as just "example" afaik, but it gets ugly when you use two words without a hyphen in the domain.
0:13:11
kakuhen
aeth: sure, that's exactly my point: the confusion seems to come from nil representing both the (generalized) boolean false and the empty list. But otherwise, the design is not very counterintuitive to me
0:13:17
aeth
masinter: well, no, because now the owner of example-regular-expression.com (which might actually be a site, don't go there, I'm making it up, poorly) will be mad at you if you express example.com/regular-expression as com.example-regular-expression
0:13:26
aeth
masinter: the point is to be unambiguous after all and now you just introduced ambiguity again
0:13:50
kakuhen
as for interchange of data between Common Lisp and languages that distinguish a false value and a null value, I agree it's annoying deciding how to designate this kind of data
0:16:11
aeth
it gets even trickier if you want to represent {"foo" : 42} as (:foo 42) because now you have nil that could be {}, [], false, or null (but please don't let it be null)
0:24:29
masinter
and one has first and last name, and the other has family and given name, you have to work hard to disambiguate
2:25:53
jcowan
Guile has (), #f, and #nil so that it can handle both the Elisp/CL system and the Scheme system. Specifically, #nil and #f are both false, and #nil and () are both empty lists.
2:26:52
jcowan
So you shouldn't make inquiries like (eq x nil), instead you should use (not x) or (null x).