> Hello List....
>
> First of all, the term "form" is confusing to me. Would someone give
> me an appropriate synonym.

I'm sure, gurus will answer much better, but here is 50 cent.
"form" is a native which converts all values to human readable strings.

> I understand that a Rebol "word" is not a variable bound to a datatype
> as in other programming languages. It is merely the "name" of a
> container which can hold any Rebol  datatype; which itself has the
> "word!" datatype.

Words are just symbols which can be a variable or not. They can hold a  
value (which can be any value, native, function, string, email etc.). Or  
they don't hold a value then they are just symbols.

>
> Assuming the Rebol word "age", if I want to have the name of the
> container returned to me, I would use the syntax (form) 'age. Correct?
> Where does the "lit-word" datatype come in? I don't get the
> terminology!
>
> If I want to have assign something to the "age" container, I would
> use:
>
> age: 35
>
> is the ":" the "set-word!" datatype.

Yes it is a set-word which means you are assigning a value to a word.
where does lit-word come in, if you need to talk about a word itself not  
by its value.
If you type age and if it has a value you will get that value, if you type  
'age it means you are talking about the age word.

Try these examples:

type? first [a:] ;== set-word!
type? first [:a] ;== get-word!
type? first ['a] ;== lit-word!
type? first [a]  ;== word!

And also try to examine the source codes of probe and source functions:

?? probe
?? source

You will see the usage of lit-word and get-word.

>
> If I want the "contents" of age, I would use:
>
> :age and have 35 returned to me. is the prefixed ":" the "get-word!"
> datatype?

:age is a get-word.
age and :age both return same value which is 35. But it is important if  
age is a function!

age: func [] [7 * 5]

age ;will return 35, the value by evaluated by age function.
:age ;returns the function itself.

Now look at that:

probe age  ;==35
probe :age ;==func [][7 * 5]

without get-word age will be evaluated. So you can pass a function as a  
argument also:
f: func [x] [probe :x]
f :age  ;==func [][7 * 5]


>
> I'm getting all balled up with the terminology - how is an "action" -
> like "get the contents of the word called "age", a datatype?
>
> Also, what's the difference between using:
>
> age: 45
>
> SET age 45
>

they are similar, but there is a bit difference. Currently you can skip  
that part :) Look at below for one of example using set:

f: does [print "no return value"]
  a: f
no return value
** Script Error: a needs a value
** Near: a: f

set/any 'a f
no return value
;no error occurred, a is unset!

Try reading the core.pdf it has lots of explanations about words.
Those set-, get-, lit- words are mostly useful when you are parsing an  
input:

parse [a: 5 'b :f] [set-word! integer! lit-word! get-word!] ;== true

Of course it is a meaningless example but you get the idea, you can parse  
a config file, a user input, any blocks come from network etc..
But Parse is another deep topic.
Hope I could help.
-- 
To unsubscribe from the list, just send an email to 
lists at rebol.com with unsubscribe as the subject.

Reply via email to