[REBOL] Re: Block Creation Re:
From: brett:codeconscious at: 21-Oct-2000 12:08
Hi Joel,
Great approach!
Just wanted to give some feedback.
Overall yes I think your approach definitely helps to explain the "suprising
behaviour of literal blocks" (almost needs an acronym doesn't it? :) ).
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.
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.
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.
I want to give my little story of how I reconciled Rebol's behaviour in my
mind.
When I was trying to get my head around the observed behaviour of Rebol with
what I understood to be happening I came up with two ideas that provided a
reconciliation.
A) Ages ago a had a quick look at a communication theory book. It described
symbol, reference and context
. Another talked of "sign", "signifier" and
signified
. I though hmm.... In my mind I saw a strong correlation of
these ideas with Rebol's "words" and "values".
B) While looking through the code of "probe", "help" and "source" I
remembered Carl mentioning that Rebol was its own meta language. Typing
source source
certainly seems to confirm this.
For me A and B considered together gave me the following line of thought.
It occurred to me that the words (signifiers) I communicate to Rebol (type
at console/ execute script) are interpreted by Rebol into values
(signified). These values are in Rebol and I can never actually see them - I
had to use words to refer to them.
When Rebol communiates with me it uses the same language, that is the same
words (signifiers). I then interpret them and understand the values
signified
that Rebol has communicated to me.
So at the console I type
a: []
meaning "let a refer to an empty block"
Rebol responds with
== []
meaning "empty block"
Then I type,
b: :a
what is a?, let b refer to this
Rebol follows obviously with
== []
empty block
So then I type,
append b "hi"
what is b?, append to this the string 'hi'
Rebol,
== ["hi"]
Block with the string 'hi'
And of course I ask,
a
what is a?
Rebol response,
== ["hi"]
Block with the string 'hi'
What was the point of that tedium? 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.
Brett.
----- Original Message -----
From: "Joel Neely" <[joel--neely--fedex--com]>
To: <[rebol-list--rebol--com]>
Sent: Friday, October 20, 2000 2:29 AM
Subject: [REBOL] Re: Block Creation Re:
> Hello, Carl and list,
>
> Every time I try to verbalize what happens in cases such as:
>
> rebol []
> for test1 1 5 1 [
> block1: []
> insert block1 "text1"
> ]
>
> I become very frustrated with myself. I end up with remarks that are
> far more complex than my mental concept of what's happening. I take
> that to mean that either I can't handle powerful languages (such as
> American English or REBOL ;-) very well, OR that I'm going about the
> explanation the wrong way.
...