Mark H Weaver <m...@netris.org> writes: > David Kastrup <d...@gnu.org> writes: > >> Mark H Weaver <m...@netris.org> writes: >> >>> David Kastrup <d...@gnu.org> writes: >>> >>>> Mark H Weaver <m...@netris.org> writes: >>>> >>>> object identity is checked by eq? and is conceptually different from >>>> value equality. >>> >>> The Scheme standards don't support your view. The _only_ difference >>> between 'eq?' and 'eqv?' is that 'eqv?' is well-defined on numbers and >>> characters, whereas 'eq?' is unspecified for those types. >> >> And why would that be if numbers were proper objects? The difference is >> _exactly_ there because they aren't. > > I don't know what you mean by "proper objects". I guess maybe you mean > "objects with identity". > >>> Numbers and characters do not have any notion of "object identity", >>> apart from operational equivalence. >> >> Which is why it does not make a lot of sense to assign "object >> properties" to them. > > I understand that in the dominant "object oriented" programming > communities of today, the word "object" usually implies mutability and > identity, but the Scheme standards use the term differently. > > In the Scheme standards, the word "object" is synonymous with "value". > R5RS section 1.1 states "Types are associated with values (also called > objects) rather than with variables." Furthermore, R6RS consistently > calls numbers "objects", even though they lack "object identity" in the > sense that you mean.
Well, eq?/eqv? are an inheritance from Lisp's eq/eql. If there is no clear conceptual difference any more, it would seem like a mistake to keep two different operators around. -- David Kastrup