Hi Jeff,

you wrote:
>I wonder what Carl's thinking is
>about why words default to NONE in functions, and UNSET at the global
>and object contexts.  What's the deeper meaning?  

A few more fun samples, followed by a short comment:

1. Samples
>> f: func [arg [any-type!] ] [ print value? 'arg ]
>> f
false
>> f 1
true

>> f: func [ /refine arg [any-type!] ] [ print value? 'arg ]
>> f
true
>> f/refine
false

>> o: make object! [ a: none unset 'a ]
>> probe o

make object! [
    a: unset
]

>> type? o/a
== unset!
>>

>> in o 'b
== none
>> value? in o 'b
== true

Of course. none is defined. 
Wouldn't it be better is in o 'b returned unset! instead of none?

>> in o 'a
== a
>> value? in o 'a
== false

because 'a in o is defined as unset!.

2. Comment
Is it really a puzzle? As soon as arguments are used as part of a function
declaration, they have entered into a state of existence and must be
initialized to some none-value. 



At 11:23 AM 5/29/00 -0600, you wrote:
>
>>  [EMAIL PROTECTED] wrote:
>>> The trick here is what does  SELF evaluate to  when you set 'x to
>>> it?  SELF at that time is an object, containing the words C and D,
>>> but those words haven't yet been assigned anything at the time you
>>> assign the word X to SELF.  
>>
>>  I would assume they're unset in that stage (even if perhaps setting
>> them to NONE  could make more sense  for an object,  like  it is for
>> function contexts).
>
>  Which makes me consider what are the real distinctions between NONE
>and UNSET?  I tend to think that NONE, in REBOL, is closer to a
>logical state, where as UNSET is more of an existential state.  For a
>function, local variables defaulting to NONE eases a common question
>function writers will ask in their code:
>
>   if local-variable [do-something-with local-variable]
>
>  I tend to think that words in the global context or in an object
>context are more in an existential state. Once they are mentioned in a
>given context the word exists but with no value.  They either are
>filled in by the person mentioning that word in that context or not.
>A word at the global context or in an object context isn't like a word
>in a function context which may be changing all the time, being passed
>in or not.  Those non function context variables seem more
>existential. At least, that's how it all strikes me.  But. of course,
>that's just my own formulation, and not necessarily the most in
>keeping with REBOL's philosophy.  I wonder what Carl's thinking is
>about why words default to NONE in functions, and UNSET at the global
>and object contexts.  What's the deeper meaning?  There always is a
>deeper purpose with most things in REBOL.  (-:
>
>  Cheers--
>
>       -jeff
>
>
>
>

;- Elan >> [: - )]

Reply via email to