[REBOL] Re: The truth about scope
From: lmecir:mbox:vol:cz at: 15-Apr-2005 7:42
A short terminological "detour":
>Hi Volker,
>
>On Thursday, April 14, 2005, 1:12:08 PM, you wrote:
>
>VN> i guess you made a typo and now we have a misunderstanding.
>
>Well, no.
>
>But, that is an implementation detail.
>
>The position in series is kept in the value. So, S and B/1, from
>the point of view of implementation, are two distinct but
>identical values.
>
This deserves one more comment I think. My POV is:
*Value sameness doesn't depend on implementation at all.*
Proof:
For every mathematician (and some other people too, I hope) knows, that
there is only one number one (1). It doesn't matter, that a computer
language implementor chooses (practical reasons) to "store" the value at
different "positions" in the computer memory. Everybody knows, that all
1's are actually just one (mathematical) 1.
Although you surely could say, that the "1's" "stored at distinct places
in the memory" are "distinct but identical", such a sentence doesn't
have much sense, regardless of the implementation, because you are
coupling
the number with something, that is not a property of the
number at all - the place in the computer memory where the number "resides".
> Of course, Ladislav is right in saying that
>because you cannot discern them, they are the same. However, they
>are not in the current implementation,
>
This is the point showing an "implementation-dependent" look at identity.
....
>To conclude, I agree with Ladislav that [1 1] may be considered a
>series containing the same value twice, and I agree that the
>position in the series is not an attribute of the value. However,
>we know that in the current REBOL implementation a block is an
>array of value slots and an integer fits one value slot, so [1 1]
>is two value slots with two values (which are identical). I agree
>that this is an implementation detail and that it is irrelevant.
>
>Regards,
> Gabriele.
>
Conclusion:
The main difference, as Gabriele pointed out, is terminological.
An implementation-independent terminology is less confusing. (Does not
force
us to use notions like "distinct but identical").
The only "disadvantage" of it is, that it doesn't try to "directly"
describe the implementation, although there aren't any real obstacles to
use it when describing the implementation and say, that "one value 1 is
stored at two places in the computer memory".
Some may feel a "lack" when speaking about modifications like:
(implementaion-dependent terminology): I had two "distinct" 1's in the
computer memory. I changed the first one to 2. Now I have got one 1 and
one 2 in the computer memory.
(implementation-independent terminology): I had number 1 "stored" (I can
use a notion "referenced by" or "referred to" if I prefer) at two places
in the computer memory. I changed the first memory place (Not number 1,
nobody is actually able to change number 1!) to "contain" number 2
instead. Now I have got number 1 "stored" at one place in the computer
memory and number 2 "stored" at another place in the memory.
-Ladislav