[REBOL] Re: R: Mutability and sameness - a new puzzle
From: rotenca:telvia:it at: 23-Jul-2001 13:00
From: "Ladislav Mecir" <[lmecir--mbox--vol--cz]>
Thank you for your patience, I'm trying to learn Rebol reading your articles,
so my vision is not so clear. Mine are often "free thought"...
> Your approach is valid. The only problem with it is, that if you apply it
> consistently, you are not able to discern:
>
> e: [1]
> f: [1]
>
> , because they are discernible only by mutations (if we exclude the
> bug-plagued SAME?), exactly like the A and B values above.
Yes.
> I would say, that index is really an attribute of Rebol series and has
> little to do with words ...
My error. I'll try to clear my vision to myself (and correct it in the
meanwhile). There are 3 distinct layers.
word-series-data
1) word: changing the binding of a word does not changes data, but can changes
the result of expression "get/any..."
2) series have index, which is not indifferent to "same?" except when index is
beyond tail. Two series can appear different even if they are linked to the
same close set of data: if all the data are the same (same? head a head
b;==true), difference depends only by index.
3) different storage of identical data can be revealed by some functions.
However in many cases, the storage of values is indifferent to "same?":
same? 1 1; ==true
I ask myself: the two "1" where are stored? At the same "memory address"? Are
they mut-equal? Are dependent? Are independent but are the same? I can discern
the two "1" but they are the same. I do not understand.
Sameness appears to me like an arbitrary convention that has not a "real"
meaning. It has for me little "reality" or "naturality". Correct my vision:
your approach to the problem is: we can't make a "real" (hardware?) model of
sameness in Rebol, but we can construct a specific routine: the class of all
its "true" result is what we call "sameness" in Rebol.
Could be the only possible solution.
> I see, what you are after. You are saying, that you can create a similar
> expression as the one I used and get a different result. The expression can
> be even more similar, than you have shown:
>
> a: 4
> expression: to paren! [same? get/any 'a get/any 'a]
> b: use [a] [a: 3 ['a]]
> change at :expression 3 b
> probe :expression ; == (same? get/any 'a get/any 'a)
> expression ; == false
Here I see your experience!
> Although the similarity is obvious, I must say, that there are visible
> differences.
Perhaps in Rebol same things are not always the same. :-)
> What I had in mind was actually any expression having the property to yield
> a Rebol value. I.e. for some values the (eq :a :a) will do, for some cases
> (eq 1 + 1 1 + 1) will do, for some cases (eq first [1] first [1]) will do,
> for some cases (eq get/any in system/words 'a get/any in system/words 'a)
> will do, etc. The only thing we really need for the expression is to start
> with "(eq", finish with ")" and contain one subexpression representing a
> Rebol value written twice in succession. I thought, that the expression like
> (get/any 'a) would be sufficient, because it can represent all necessary
> cases.
My conjecture is that it doesn't exist in Rebol one expression which in every
situation and for all purpose give always the same result, because of
reflectivity of language. It is a conjecture.
> That is what I am after here (to make the "same data" meaning clear). I
> don't intend to make clear the meaning of the "two words have the same
> meaning". I am pretty sure, that the words have very little to do with the
> subject.
>The only reason why I used the subexpression (get/any 'a) lies in
> the fact, that it can represent any Rebol value. But, If you are not
> comfortable with it, you can use any other subexpression, which is capable
> to represent a Rebol value.
You make ask to myself: what is a value in Rebol?
A "value" seems only the result of the evaluation of an expression. We can't
see data itself; we can see only the results of expressions. I could say that
value
in Rebol is what is printed on the console after an expression +
Return. It is not an entity that exists in front of the language but the
result of language. We could disassemble Rebol and go and see what "really" is
a series, an integer, a string. However, we should exit from Rebol. In C I can
write:
a=1
then, build a pointer to "a" and see what "1" means for C, bit for bit, which
all we know are a state (on/off) of a real (hardware) cell of memory. We can
also check this with an assembly routine passing the pointer.
But in Rebol we can't do it, we must believe in User Guide when it say
something to us about storage of integer; we have no pointers. For us integer!
is a syntax convention, something like:
sign-digits
Therefore, sameness has a meaning only in the language (it is the formality of
sameness). Can we define "value" in Rebol without a Rebol expression? "Value"
does not seem something that exist outside the language and that the language
find
, but a construct, not a "data" (in the literal sense of word). Could we
speak of Rebol as of a kantian language? :-)
> What about a question: "Is the value 1 indiscernible from itself?" I am
> convinced, that the question has got its meaning regardless of the fact,
> that the answer should be positive in this case.
Your question is: can I predicate "indiscernible" to "1" and "itself"?
Here we do not discern two real 1, we discern the predicate "1" (with its
meaning) from the predicate "itself", whose meaning is different from the
meaning of "1". In other words: Can we predicate to the "thing" 1 the two
(obviously) different predicates "1" and "itself"? I admit: my English
competence is very limited, I could explain it much better in my language.
This is Leibniz, not necessary my thought (I made a boutade two message ago).
As you know, Leibniz indiscernibility lead to "simplicity" against "extension"
and to "spirit" against "matter". What is truly indisc. has no part, no space,
no time, no relations, no windows (!). His idea, as you see, has many deep
consequences.
> Ladislav
ciao
Romano