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

[REBOL] Re: Block Creation Re:

From: joel:neely:fedex at: 22-Oct-2000 21:30

Hi, Brett, [rebol-bounce--rebol--com] wrote:
> Just wanted to give some feedback. >
Thanks for the feedback!
> I liked point 7. () are not something I used much - other than > for making code more readable, or using the compose function. > But your point, makes me think again. >
To be honest, I don't use PAREN! values as often as I could. I'm getting ready to do a rewrite of a couple of substantial pieces of code, so I'm going to keep my eyes open for places where PAREN!s might be appropriate.
> I initially expected something else from point 12. At first I > thought "Chain of references" to mean some sort of data structure > held together with pointers, when actually it appears you were > showing how a series reference can get passed around. >
That's a good point. I was really thinking of something like chain of assignments but couldn't say that, as we don't have an "assignment" operator in REBOL! ;-) Perhaps I should have said "This behavior does not depend on how or when the reference to the block was obtained." Do you think that works as well or better?
> Point 13 say "a shared series reference is being modified". > Your point is well made, but I would have expected the phrase > "the same series is being modified" was more accurate. >
My first attempt could stand some rewording here as well! I avoid saying "the same series" because I consider it misleading. What is the relationship between A and B in each of the following?
>> a: [1 2 3] == [1 2 3] >> b: a == [1 2 3] >> same? a b == true >> b: next a == [2 3] >> same? a b == false >> append a 4 == [1 2 3 4] >> b == [2 3 4]
To my mind a "series" requires both a sequence of data values and a position within that sequence. In the second set of expressions above, I would contend that A and B *are not* the "same series", both because REBOL says they're not, and because the position of each is different. Unfortunately, the term "sequence" is not politically correct REBOL terminology, so it's awkward to describe the relationship! If I try to use more precise language, I end up talking about two series values that refer to the same data sequence (whether at the same position or not), and my sentences start sounding too convoluted for my taste. I'm still working on this one.
> I want to give my little story of how I reconciled Rebol's > behaviour in my mind. >
[...interesting discussion reluctantly snipped...]
> the Rebol words "a" and "b" both became > signifiers with the same signified (a block). > Rebol cannot show this relationship to me visually > >> source a > a: ["hi"] > >> source b > b: ["hi"] > > But I can ask it if this is the case > >> same? a b > == true > > So while I realise that this may not be the best description > for someone learning the language, I believe this model > (signifiers/signified) has value in highlighting "the big picture" > when using Rebol. Rebol is a messaging language. > > A language that does not require you to have to think in "bits", > "byte boundaries", etc. >
First of all, let me give that last sentence a wholehearted three cheers, and then go further and say that having to think in bits, bytes, etc. is precisely the characteristic that segregates low- level languages from high level languages (in which one does NOT have to think in such implementation details). That said, I'd be interested in how to use the "signifier/signified" model to describe this:
>> a:[] == [] >> b: reduce [1 a 2] == [1 [] 2] >> c: reduce [3 a 4] == [3 [] 4] >> a: reduce [b c] == [[1 [] 2] [3 [] 4]] >> append b/2 "Hi!" == ["Hi!"] >> a == [[1 ["Hi!"] 2] [3 ["Hi!"] 4]]
The point being that there doesn't have to be a "name" or "word" to act as a signifier! It is entirely possible to have data structures with shared references (or "with references to series values that refer to the same sequence") which exhibit the sharing surprise without there being any names for the shared parts. -jn-