| First of all, congrats on the release of Arc! It takes courage to put a new language out there and watch all the geeks rip it apart with their bicycle-shed-painting suggestions ;-P One of the things that bugs me about ANSI Common Lisp is the huge set of "equality" predicates: EQ, EQL, EQUAL, EQUALP, ... It's nice to see Arc at least use a different name (ISO) that suggests "structural isomorphism" rather than the ambiguous concept of "equality." I imagine with the right type information, a compiler could convert ISO into a faster type-specific predicate (heck, even C compilers know to replace "==" with the right machine instruction, depending on the types of the arguments). I was a bit surprised not to see an advertisement along these lines in the Arc Tutorial -- something like, "Hey, we simplified the equality predicate system in CL!" There's a famous paper somewhere about how the main reason CL needs both EQ and EQUAL is that an object's state is mutable; if you see "the same object" (via EQ) twice, it might not contain "the same data" (via EQUAL) each time. I've never encountered huge problems in my daily programming life because of this, though it might be nice to have some objects that are guaranteed immutable. |