[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: dynamic vs. static typing
swm@itasoftware.com wrote:
> At 9:01 PM +0100 11/20/03, Jakub Travnik wrote:
>
>> From: "Anton van Straaten" <anton@appsolutions.com>
>> Subject: RE: dynamic vs. static typing
>> Date: Thu, 20 Nov 2003 14:06:02 -0500
>>
>>> Joe Marshall wrote:
>>> The Haskell example I referenced includes the enumeration of a
>>> number of
>>> seemingly trivial identity relationships, such as "Monday ==
>>> Monday", i.e.
>>> specifying, for the benefit of a type definition, "whether an
>>> object is
>>> identical to itself".
>>
>>
>> Moreover assignment itself and value passing can be part of its
>> interface. Values in many languages have different behavior when
>> passed or assigned depending on type. In C++, class can specify
>> assignment operator. In Lisps some values are passed by reference and
>> others by value - and that is really different behavior. Some other
>> values (not only common ones like numbers) can have single instance
>> semantic too.
>
>
> No, no, no. In Lisp, all parameters are passed by "object
> reference" (*). Some of these objects are mutable, so you
> can change "parts" of them. Integers happen to be immutable,
> so there's no part of it you can change.
>
> People constantly get confused about this because so many
> Lisp implementations have tagged integers that "feel like"
> they are being passed by value. But they aren't -- those
> are just an efficient way of doing the object reference.
Right -- consider bignums (integers too big to fit in the small tagged
integers).
>
> ----------
> (*) Really, passing by "object reference" is the same as
> passing by value, but I (and others) use this term so as
> to avoid the by-value/by-reference terminology quagmire.