freenode/#lisp - IRC Chatlog
Search
23:11:37
dbotton_
as pointed out it was an arbitrary choice, but still there must have been some reason to do so
23:12:25
dbotton_
between vector and string seems clear to offer equal and equalp as case sensitive or insensitive comparison
23:13:09
phoe
dbotton_: likely this was an effect of the fact that if a predicate applies recursive equality then it applies itself only
23:13:26
phoe
e.g. EQUAL doesn't apply EQL anywhere, other than for the cases where it decays into EQL and/or EQ
23:14:35
phoe
you can define your own equality predicate that works differently, e.g. compares vectors by their size/element type/descends into elements by applying itself and otherwise behaves like EQUAL
23:15:17
phoe
I guess, and only guess, this is for performance reasons and because arrays are not functional data structures like conses
23:15:40
phoe
comparing conses by value makes sense, but comparing arrays by value is not something that is requested as usually as it is for conses
23:16:11
phoe
if you are doing arrays then you are most likely mutating them, so it makes sense to compare mutable data structures by identity first and foremost
23:17:47
aeth
call it trivial-equality... just DEFGENERICs for the built-in data types (there aren't that many) and relying on user code for the rest
23:18:47
aeth
you could also just have a trivial-generics or something; then you could fit in a bunch of other common generics like NAME
23:19:23
aeth
Any NAME that has more than one argument (unless optional/key) is going to break so much code that (defgeneric name (object)) is safe
10:51:40
Xach
jmercouris: You write nonsense and don't seem to be able to accept correction. I don't want to expose that to a wider audience.
10:54:54
Xach
Or rather, I don't want to actively help expose it - it can get plenty of exposure through many other means without my assistance.