Mutability and sameness - a new puzzle
[1/11] from: lmecir:mbox:vol:cz at: 20-Jul-2001 16:33
Hi Romano,
> > For the MUT-EQUAL? function to work more satisfactorily we need a better
> > LENGTH? function.
...snip...
> Why not:
> indexz2?: func [series [series!] /local result][
<<quoted lines omitted: 4>>
> ]
> I think that "tail series" should be always the same: a relative position
not
> an absolute one.
> Tail should be always the end. When you remove an item, tail should
> dinamically change. So a and b in this case should be(come) the same.
Yes, the INDEXZ2? function surely has got its merits, but it didn't solve my
problem below.
I proposed the INDEXZ? function to be able to discern some block values,
that are discernible. I shall give you an example so that we may discuss our
POV's. Let's have:
a: tail [1 2]
b: back a
clear head a
I defined the meaning of Identity: two values are the same, if they are
indiscernible, i.e., if they are equivalent for every purpose (for
interested: the exact definition is in
http://www.sweb.cz/LMecir/evaluation.html). This definition is quite useful,
simple and natural. If I use it for the above A and B, I will find out, that
A and B are discernible (by the version of the MUT-EQUAL? function using
LENGTHZ? function). That is why I see, that they aren't identical.
> I think that could be util a function to discern if data adressed by
series
> share the same memory. In this case a and b share memory (you can do "tail
> head b" to prove). Same? like mut-equal? makes a difference between series
at
> different position.
What you have in mind is probably something like series independency
represented by the INDEPENDENT? function you can find in
http://www.rebolforces.com/articles/series.html . That differs from
indiscernibility, because the blocks like:
a: [1 2]
b: next a
surely are discernible, but they aren't independent.
> About discernibility i don't understand a thing: if you think of it as
total
> indiscernibility (like Leibniz), so a <> b because "root" are different,
or
> data indiscernibility, so a word and a path or two different word can be
the
> "same" only because they address the same memory data.
I defined what "Rebol indiscernibility" means to me in
http://www.sweb.cz/LMecir/evaluation.html
The definition is a little bit technical, but it is understandable, I think.
I would say, that it is a Leibnitz-like definition. There may be a different
POV, of course, but the definition I proposed is a result of my search for a
definition that would be as exact and natural as possible (any other
takers?).
I have stolen the main ideas from Joel Neely during the discussion. Thanks,
Joel.
The raison d' etre of the definition lies in the fact, that the SAME?
function is provably buggy (Rebol crashes, errors, no results for some
values,...) as well as its description. That is why I was interested, if
there is any "Rebol natural
identity", and how shall it look like. I am pretty satisfied with the result
I obtained: There is exactly one natural identity in Rebol and it can be
defined as a Rebol function, although it shall differ from the SAME?
function. Moreover, the Rebol Identity can be defined and described in Rebol
terms without need to use Rebol unfriendly (and wrong) terminology, like
memory address
.
> I think that if two item of Rebol were totally indiscernibles, we could
not
> ask if they are the same, because we could not discern them.
That is an error, I think. We can always ask questions like: "Are 1 and 1
indiscernible values?" as well as: "Are 1 and 2 indiscernible values?". The
question is meaningful regardless of the fact, if the answer is positive or
negative.
> I liked your articles very much.
I am honored.
> > Regards
> > Ladislav
>
> ciao
> romano
>
New puzzle:
Define a function RECURSIVE? able to find out, if a Rebol block is
recursive.
[2/11] from: lmecir:mbox:vol:cz at: 21-Jul-2001 22:49
Hi all,
My solution of the new puzzle:
> Define a function RECURSIVE? able to find out, if a Rebol block is
> recursive.
together with a DEEPCOPY function can be found in the latest version of
http://www.sweb.cz/LMecir/evaluation.html Nevertheless, you can post your
solutions to discuss the differences.
[3/11] from: rotenca:telvia:it at: 22-Jul-2001 0:30
Mecir has written some time ago:
> I propose the INDEXZ? function to be able to discern some block values,
> that are discernible. I shall give you an example so that we may discuss our
<<quoted lines omitted: 8>>
> A and B are discernible (by the version of the MUT-EQUAL? function using
> LENGTHZ? function). That is why I see, that they aren't identical.
I've understood. An index, being an absolute position, remains in
memory also if the index is past the end of serie. When the serie is filled
up to the index, the index of the serie return to be valid. The only method to
preserve the index embedded and distingue "a" from "b" is filling the
series, like in your routine. Skip, back, next do not help because they all
give
an error.
However, in the Rebol context, the value of b, when "a" is clear, is an error,
which is not a bug, but a feature (I think). So your method of retrieving the
index of b with lenghtz? goes beyond the actual Rebol implementation.
When a is clear, b at position 3 and c (=a) at position 100 give the same
result: an error and therefore their values are indiscernibles.
To discern them you must change their value! So I think that "b"
(with index 3) and "c" (with index 100) are discernibles only if their value
is not what actually it is (a clear series). The actual value is an error for
both. You can't discern the difference between two values, changing them.
This lead only to an "ipotetical difference": if values of "a" and "b" were
x
then...
Index, indeed, is not a propriety of values but a propriety of words. In this
case, clearing "a" hides this propriety and makes it indifferent to the
get function (it is indifferent for get if a word is 3 o 100 places after
tail).
Another thing: if you make a different binding, two word which have the same
value can result in different value. Therefore, as you see, I can distingue
two words with the same value by binding one of them to another context.
And binding does not change the initial value, as one can see with a dependent
word. So if we try to define all the ipotetical values of a word, we must keep
in care
all the binding (one for every object - could be a fun routine).
Therefore, i think you should introduce the concept of binding and the concept
of
object before speaking of indiscernibility.
Your text:
>Observation # 1: Two Rebol values A and B are identical, if for every
equivalence EQ the expression >(eq get/any 'a get/any 'b) yields TRUE. In
different words: two Rebol values are identical, if they are >equivalent for
every purpose
Now see this a little strange EQ text which try to respect your spec of EQ:
a: 4
o: context [a: 3]
same? get/any 'a get/any 'a ;=true
same? reduce bind [get/any 'a] in o 'a reduce bind [get/any 'a]
'system;=false
The value of a is not identical to value of a. :-)
I see another little problem, about path:
same? get/any 'a get/any 'system/words/a
gives an error. Perhaps, you should speak only of words or extend the
definition to include path. Object path is also an indirect form of binding.
> What you have in mind is probably something like series independence
> represented by the INDEPENDENT? function you can find in
Yes, you are right.
> The raison d' etre of the definition lies in the fact, that the SAME?
> function is provably buggy (Rebol crashes, errors, no results for some
<<quoted lines omitted: 6>>
> terms without need to use Rebol unfriendly (and wrong) terminology, like
> "memory address".
Trying a very initial definition of mine, more semantic than sintax oriented,
I should say:
Two Words have the same meaning (value) if the Vocabularies (context)
used by the Interpreter for that words, associate (get) them to the same data.
Many things should be cleared: first of all: "same data".
> That is an error, I think. We can always ask questions like: "Are 1 and 1
> indiscernible values?" as well as: "Are 1 and 2 indiscernible values?". The
> question is meaningful regardless of the fact, if the answer is positive or
> negative.
Nobody can discern what is indiscernible, as Leibniz teaches, the question:
Are 1 and 1 indiscernible values?
discern the two "1" with the expression
itself: the two "1", in fact, have different position in the statement, so
you,
and I, can discern them and the question is meaningful.
I asked you at the beginning if you take in consideration the "literal" or
lexical
layer to define indiscernibility...
> Regards
> Ladislav
> New puzzle:
>
> Define a function RECURSIVE? able to find out, if a Rebol block is
> recursive.
I'll have seen your new routines. I'll study them asap!
ciao
romano
[4/11] from: g:santilli:tiscalinet:it at: 22-Jul-2001 12:07
Hello Romano!
On 22-Lug-01, you wrote:
RT> Index, indeed, is not a propriety of values but a propriety
RT> of words. In this case, clearing "a" hides this propriety and
Actually, it is a property of series values. Words just have the
ability to refer to other values (whatever they are).
Proof:
>> series: [a b c d]
== [a b c d]
>> blk: reduce [series skip series 2]
== [[a b c d] [c d]]
>> head blk/2
== [a b c d]
RT> Another thing: if you make a different binding, two word
RT> which have the same value can result in different value.
Because they don't refer to the same value! Two words with the
same spelling but with a different binding are two different word!
values. They can refer to the same REBOL value or they can refer
to two different values, just like any other couple of different
word! values.
RT> same? reduce bind [get/any 'a] in o 'a reduce bind [get/any
RT> 'a] 'system;=false
BTW, it's simpler this way:
same? get/any in o 'a get/any in system/words 'a
RT> The value of a is not identical to value of a. :-)
Of course not, You are comparing two different values; the fact
that they are referred to by two words that happen to have the
same spelling is irrelevant.
Regards,
Gabriele.
--
Gabriele Santilli <[giesse--writeme--com]> - Amigan - REBOL programmer
Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/
[5/11] from: lmecir:mbox:vol:cz at: 22-Jul-2001 17:59
Hi Romano,
> > I propose the INDEXZ? function to be able to discern some block values,
> > that are discernible. I shall give you an example so that we may discuss
our
> > POV's. Let's have:
> >
> > a: tail [1 2]
> > b: back a
> > clear head a
>
...snip...
> I've understood. An index, being an absolute position, remains in
> memory also if the index is past the end of serie. When the serie is
filled
> up to the index, the index of the serie return to be valid. The only
method to
> preserve the index embedded and distingue "a" from "b" is filling the
> series, like in your routine. Skip, back, next do not help because they
all
> give
> an error.
>
> However, in the Rebol context, the value of b, when "a" is clear, is an
error,
> which is not a bug, but a feature (I think). So your method of retrieving
the
> index of b with lenghtz? goes beyond the actual Rebol implementation.
> When a is clear, b at position 3 and c (=a) at position 100 give the same
> result: an error and therefore their values are indiscernibles.
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.
> To discern them you must change their value! So I think that "b"
> (with index 3) and "c" (with index 100) are discernibles only if their
value
> is not what actually it is (a clear series). The actual value is an error
for
> both. You can't discern the difference between two values, changing them.
> This lead only to an "ipotetical difference": if values of "a" and "b"
were
> "x" then...
>
> Index, indeed, is not a propriety of values but a propriety of words. In
this
> case, clearing "a" hides this propriety and makes it indifferent to the
> get function (it is indifferent for get if a word is 3 o 100 places after
> tail).
I would say, that index is really an attribute of Rebol series and has
little to do with words ...
> Another thing: if you make a different binding, two word which have the
same
> value can result in different value. Therefore, as you see, I can
distingue
> two words with the same value by binding one of them to another context.
> And binding does not change the initial value, as one can see with a
dependent
> word. So if we try to define all the ipotetical values of a word, we must
keep
> in care
> all the binding (one for every object - could be a fun routine).
> Therefore, i think you should introduce the concept of binding and the
concept
> of
> object before speaking of indiscernibility.
>
> Your text:
>
> >Observation # 1: Two Rebol values A and B are identical, if for every
> equivalence EQ the expression >(eq get/any 'a get/any 'b) yields TRUE. In
> different words: two Rebol values are identical, if they are equivalent
for
> every purpose
>
> Now see this a little strange EQ text which try to respect your spec of
EQ:
> a: 4
> o: context [a: 3]
> same? get/any 'a get/any 'a ;=true
> same? reduce bind [get/any 'a] in o 'a reduce bind [get/any 'a]
> 'system;=false
>
> The value of a is not identical to value of a. :-)
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
Although the similarity is obvious, I must say, that there are visible
differences.
> I see another little problem, about path:
>
> same? get/any 'a get/any 'system/words/a
>
> gives an error. Perhaps, you should speak only of words or extend the
> definition to include path. Object path is also an indirect form of
binding.
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.
...snip...
> Trying a very initial definition of mine, more semantic than sintax
oriented,
> I should say:
>
> Two Words have the same meaning (value) if the Vocabularies (context)
> used by the Interpreter for that words, associate (get) them to the same
data.
> Many things should be cleared: first of all: "same data".
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.
> > That is an error, I think. We can always ask questions like: "Are 1 and
1
> > indiscernible values?" as well as: "Are 1 and 2 indiscernible values?".
The
> > question is meaningful regardless of the fact, if the answer is positive
or
> > negative.
>
> Nobody can discern what is indiscernible, as Leibniz teaches, the
question:
> "Are 1 and 1 indiscernible values?" discern the two "1" with the
expression
> itself: the two "1", in fact, have different position in the statement, so
> you,
> and I, can discern them and the question is meaningful.
> I asked you at the beginning if you take in consideration the "literal" or
> "lexical" layer to define indiscernibility...
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. OTOH, I was trying to write
a definition, that wouldn't discern 1 and 1 "because they can be found at
different places".
My definition is there. Do you find it "literal" or "lexical"?
Ladislav
[6/11] 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
<<quoted lines omitted: 5>>
> 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
<<quoted lines omitted: 5>>
> (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
<<quoted lines omitted: 4>>
> 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
[7/11] from: rotenca:telvia:it at: 23-Jul-2001 13:07
From: "Gabriele Santilli" <[g--santilli--tiscalinet--it]>
> Hello Romano!
Hello!
> Actually, it is a property of series values. Words just have the
> ability to refer to other values (whatever they are).
<<quoted lines omitted: 4>>
> >> head blk/2
> == [a b c d]
My error. I wanted only say that sometime a series value is indipendent from
index (3 or 100 after tail is the same).
> RT> Another thing: if you make a different binding, two word
> RT> which have the same value can result in different value.
<<quoted lines omitted: 3>>
> to two different values, just like any other couple of different
> word! values.
You should read my observation in the context of thread with Mecir. The sense
was: if we leave changing the serie, to get the sameness of the value of a
word, what
happens when I change binding?
> RT> same? reduce bind [get/any 'a] in o 'a reduce bind [get/any
> RT> 'a] 'system;=false
>
> BTW, it's simpler this way:
>
> same? get/any in o 'a get/any in system/words 'a
I wanted to remain near the literal expression of EQ in the text of Mecir to
define Identical? I did not want to change the expression "get/any 'a".
> Of course not, You are comparing two different values; the fact
> that they are referred to by two words that happen to have the
> same spelling is irrelevant.
Do you think that when one changes the Binding of a word, Rebol delete the old
word and creates a newer one? I think it change only a propriety of a word,
leaving the rest the same.
> Regards,
> Gabriele.
ciao
romano
[8/11] from: lmecir:mbox:vol:cz at: 23-Jul-2001 15:31
Hi Romano,
...snip...
> You should read my observation in the context of thread with Mecir. The
sense
> was: if we leave changing the serie, to get the sameness of the value
...snip...
It was really hard for me to find out, what you had in mind. Now I
(probably) know. You didn't want to allow changes when comparing values,
because it could lead to contradictions.
You are right. If we allow replacements when comparing values, no value can
be identical with itself (A contradiction, of course!). But, if you read my
text carefully, you will find out, that I allowed only mutations (the notion
is defined in the text), not any changes!
Regards
Ladislav
[9/11] from: g::santilli::tiscalinet::it at: 23-Jul-2001 19:05
Hello Romano!
On 23-Lug-01, you wrote:
RT> Do you think that when one changes the Binding of a word,
RT> Rebol delete the old word and creates a newer one? I think it
RT> change only a propriety of a word, leaving the rest the same.
This is an interesting question. I usually ask this kind of
questions to REBOL itself:
>> block: [a]
== [a]
>> a: 1
== 1
>> obj: make object! [a: 2]
>> get first block
== 1
>> get bind first block in obj 'self
== 2
>> get first block
== 1
>> get in obj first block
== 2
>> get first block
== 1
Because of this reason, I tend to believe REBOL's creating a new
word. Of course, it might just be that FIRST is creating a new
word, but I consider this quite unlikely.
Regards,
Gabriele.
--
Gabriele Santilli <[giesse--writeme--com]> - Amigan - REBOL programmer
Amiga Group Italia sez. L'Aquila -- http://www.amyresource.it/AGI/
[10/11] from: lmecir:mbox:vol:cz at: 23-Jul-2001 20:55
Hi Romano,
don't be afraid, I think, that the things aren't that bad. A few answers
(hope they will be of some use to you):
> word-series-data
>
> 1) word: changing the binding of a word does not changes data, but can
changes
> the result of expression "get/any..."
The sentence you wrote looks a little bit oversimplified. I will try to be
more specific/exact. The notions of "mutations" and "replacements" are
defined as in the article (http://www.sweb.cz/LMecir/evaluation.html). The
following holds:
a) the only way, how you can change the binding of a word in Rebol is to
replace it by a word with different binding. You cannot mutate a word to
change its binding, as you can find in the article.
b) if you replace a word and get the value of the new word, it logically may
have nothing in common with the value of the original word
> 2) series have index, which is not indifferent to "same?" except when
index is
> beyond tail.
I would use a different formulation: the SAME? function is undefined for
series having "beyond tail" index.
> 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
<<quoted lines omitted: 3>>
> 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.
Of course, you can choose the meaning of the "two values are discernible"
predicate. What is the best way here? Your POV is, that you can discern the
1's because you see, that they are "stored" at different Places in the code:
code: [same? 1 1]
The first 1 is "stored" at the second Place of CODE, while the second 1 is
stored at the third Place. On the other hand, such discernibility (although
fully feasible, let's call it discernibility1) is trivial, because a
function INDISCERNIBLE1? using such a discernibility is:
indiscernible1?: func [
a [any-type!]
b [any-type!]
] [
false
]
You would surely agree with me, that discernibility1 has very little use.
Moreover, the INDISCERNIBLE1? is not an equivalence, because there is no
way, how we can get a TRUE result. What we really need is a way how to
compare two Rebol values (the most useful way is to have a Rebol function)
and find out if they are equivalent in some way. That is why the Identity
should be an equivalence. When we agree on this, we shall pick the "most
useful" equivalence available. For me it is the finest equivalence, because
it not only tells you, whether the values are equivalent in some sense, but
it actually tells you, whether they are equivalent in every possible sense,
which is the only situation, where I can admit, that the values are
identical.
> Sameness appears to me like an arbitrary convention that has not a "real"
> meaning.
> It has for me little "reality" or "naturality".
You are totally correct if you are speaking about the SAME? function,
because it really is an arbitrarily picked function that has got a lot of
bugs and an incorrect description. The problem with SAME? is mainly caused
by the wrong impression, that such a function can be "arbitrarily chosen". I
am pretty sure, that there is only one correct way how to define the
Identity in Rebol: it shall be the finest equivalence.
> 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.
Correction:
We can make a "real" (hardware) model of sameness in Rebol. The proof of
this is the SAME? function, which was (somewhat arbitrarily) chosen to model
the sameness in Rebol. This attempt crashed (IMHO), because the model the
SAME? function presents is arbitrary and takes into account "individual
bits" instead of "the values as whole things". To get the "real thing", we
should know what the sameness should mean, which is why I presented a
totally different approach (look at the forest instead of the individual
trees).
The resulting function then looks a little bit arbitrarily too, but the
difference lies in the way how it was defined. To repeat myself:
Rebol sameness has to be the finest equivalence.
That is all.
> 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.
That is oversimplified and incorrect, I am afraid, because e.g.
'a ; == a
yields a word value, but you can see only its root, not the whole thing,
without doing other "magic" with it.
> 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.
What I try to prove is, that we don't have to trust anything. We can always
create our own models of "what is going on". Rebol is a "higher level"
language than C, which gives us the possibility to create "higher level"
models, without the need to go down to the assembler. I do not have any
problem with that, quite the contrary is true, I like it.
> 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? :-)
There is no problem with it. It resembles other languages more, than you
think. You cannot define what is a "Rebol value", but you can summarize some
basic properties Rebol values have. But then, the same seems to be true for
almost any other language too.
> > 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,
<<quoted lines omitted: 6>>
> 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.
>
I admit, that I probably mislead you. I didn't know how Leibnitz defined his
indiscernibility. That is why all that I can say is, that the
indiscernibility I had in mind was the one I defined in my article. There
surely is a possibility to use a different indiscernibility, but it wouldn't
be as useful IMO. (see the applications in the article)
[11/11] from: rotenca:telvia:it at: 23-Jul-2001 21:27
From: "Ladislav Mecir" <[lmecir--mbox--vol--cz]>
> Hi Romano,
Hi Ladislav
> don't be afraid, I think, that the things aren't that bad. A few answers
> (hope they will be of some use to you):
Be sure!
For now, i want to say only a thing:
> indiscernible1?: func [
> a [any-type!]
> b [any-type!]
> ] [
> false
> ]
This seems to me a good definition of Indiscernibility in Leibniz and it is
the meaning of my old boutade.
ciao
romano
Notes
- Quoted lines have been omitted from some messages.
View the message alone to see the lines that have been omitted