Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

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