Subject: Re: bug#14792: Error in manual "(guile-2) Object Properties"

From: David Kastrup <[email-masked]>
Date: Tue, 16 Jul 2013 22:01:18 +0200

Mark H Weaver <[email-masked]> writes:

> David Kastrup <[email-masked]> writes:
>
>> Mark H Weaver <[email-masked]> writes:
>>
>>> David Kastrup <[email-masked]> writes:
>>>
>>>> Mark H Weaver <[email-masked]> 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