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

[REBOL] Re: The truth about scope

From: mokkel:gmx at: 14-Apr-2005 9:05

Hello Ladislav,
> I would say that my POV (as well as yours as far as I can guess) differs > from Gabriele's POV in this respect. Gabriele seems (sorry for my "wild > guess") to try to discern the following: > > string: "a string" > block: reduce [string string] ; == ["a string" "a string"] > > While I am saying that the first element of Block and the second element > of Block are identical and don't differ in any respect (i.e. it is just > one Rebol string referenced twice), Gabriele seems to present a POV, > that the first element is at the first position of the block while the > second element is at the second position of the block. > > Such an opinion is an illusion, because the position in Block is not a > property of the string. It is rather a property of the block, which > surealy has "positions" or "places" able to refer to Rebol values. So, > it is safe to say, that the first position of Block refers (currently) > to the same Rebol string as the second position, while it isn't safe to > say, that String has got (either first or second) position in Block > (because it doesn't have such property at all).
I think so too, but I also didn't think of the blocks and that they can have position either (until Gregg was showing this example) as I was just concerned with the element. So I thought I'm missing something else also. :-)
> Carl usually says "indefinite scope" in Rebol. To say itmore explicitly, > it means, that the binding of words doesn't depend ontheir "positions" > at all (like in the String example above, Rebol wordsdon't "know" their > "positions").
That's what I just got in the last days consciously. But this should be also one of the requirements of a keywordless language. For instance (as far as I understand) in Lisp you can do almost the same powerful things as in Rebol just by the raw power of lambdas. But one has a fixed binding model in the way that one knows what variable is bound to what scope when. I guess this is because at least lambda and the few keywords of Lisp have a defined meaning, which never changes. In Rebol on the other side if we can redefine everything and we just have data, then we need the evaluation model (the rules) and if we want to change something to that we have the bind function which can do whatever is needed. Isn't in this sense bind also a keyword, as also in Rebol there have to be some words which have to be "bound" to the core concepts of Rebol in order to make it working at all ? (should be x: x :x 'x 'bind [] () .... where x is just some word and bind is the word bound to the current mechanism for binding a word to a context and the brackets and parents for the evaluation flow and the invisible general interpreter mechanism with it's rules) ??? :-) I'm still trying to get what was Carls intention in developing Rebol, as it sounds nice to be able use every possible word in some context. On the other side if one uses 'parse this isn't anymore exactly this, because to me 'parse is more like a traditional mechanism (even though one can bind a chosen amount of words there also). Just binding a block to a new context and evaluating it is dangerous and thus not really recommended, so again 'parse should be used. But this could be done in every traditional language as well (maybe not as comfortable, but still). So either I have always a trusted source and can happily evaluate and bind, it's very valuable to be able to do it, but if not and I have to start parsing, doesn't Rebol actually looses some if its power ? Just some questions :-). Thanks for listening. Michael