[REBOL] Re: object funnies
From: ingo:2b1 at: 20-Oct-2001 10:55
Hi all,
(I tried to sort my thoughts first, but didn't succeed, so you'll
have to live with what you'll now get ;-)
I think there are two reasons Rebol defaults to use words global:
- it's easier to implement
- it's more consistent
And now some random thoughts ...
AFAIK those languages defaulting to local contexts need their
variables to be declared in the respective contexts, am I right
here? For Rebol, where words don't have to be declared it gets a
little bit complicated ...
f: func [a][ v: a ] ; 'v should default to local, right?
f: func [a][ print a ] ; but sure you'll want the global 'print ?
Hhhhmmmm, OK, set-words default to local, get-words to global context.
Now something a little more weird
f: func [a][
print a
p: :print
print: func [b][p ["-->" b]
print a
]
Should the first print use the global word? Or is print local to the
function, so it is undefined in the first line?
(Having said that, I really like default to local, and I've once
sent a proposal to feedback about a "reversed-logic" func:
f: func[a /global g][ ... ]
with 'g being global, all other words being local by default. But AFAIK
it is not possible to add words to a context once it's created, so we
just _can't_ catch every word in the local context, yet ...
>> ha
** Script Error: ha has no value
** Near: ha
>> c: context [f: func[w][do compose [(to-set-word w) 2] ]]
>> c/f "ha"
== 2
>> ha
== 2
)
Well, as I said, just some random thoughts, and I'd be glad if you can
prove me wrong ...
kind regards,
Ingo