w...@ccs.neu.edu scripsit: > Those who have been claiming this has to do with whether procedures > are first-class objects are probably unfamiliar with the history of > that phrase and with its usage in other language communities. If > you tried to argue that functions aren't first class in Standard ML, > for example, SML programmers would think you've lost your marbles, > but (IIRC) SML doesn't define equality on functions at all.
Different definitions for different contexts. SML equality has ad-hoc polymorphism; Scheme `eqv?` has universal polymorphism. In SML, almost everything is immutable, and Leibniz's criterion doesn't apply. In pre-R6RS Scheme, almost everything is mutable, and Leibniz's criterion is all we have to work with. > Unfortunately, both the R5RS and the R6RS require eq? to behave the > same as eqv? on procedures. With the semantics you have suggested > and I have implemented, that cannot be done without making eq? too > complicated to inline, which defeats the whole purpose of eq?. "Too complicated" is meaningful only with respect to a given implementation. Plain Chicken, for example, has immediate characters and fixnum/flonum arithmetic, so `eqv?` is just a pointer test, two type tests, and a floating-point equality test. -- MEET US AT POINT ORANGE AT MIDNIGHT BRING YOUR DUCK OR PREPARE TO FACE WUGGUMS John Cowan co...@ccil.org http://www.ccil.org/~cowan _______________________________________________ r6rs-discuss mailing list r6rs-discuss@lists.r6rs.org http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss