[REBOL] Bug in 'use? Re:(3)
From: lmecir:geocities at: 26-Jul-2000 18:43
The following has been written:
> > Hi Ladislav, 15-Jul-2000 you wrote:
> >
> > >you are right, the problem is caused by a context
> manipulation -
> > >Use unsets your Middle every time it gets executed. My
> suggestion
> > >is to not use Use in recursive functions, while this problem
> > >doesn't get corrected.
> >
> > Judging from the nature of recursiveness, that's a little
hard,
> isn't it? ;-)
> >
> > Do you know if this problem has already been reported to
> feedback?
> >
> > Kind regards,
> > --
> > Ole Friis <[ole_f--post3--tele--dk]>
> >
here is a pretty simple example showing the problem:
temporary: "global temporary"
recfun: func [level] [
use [temporary] [
if level < 1 [
temporary: "temporary"
recfun level + 1
print ["Temporary:" temporary]
]
]
]
recfun 0
; The result:
** Script Error: temporary has no value.
** Where: temporary
; let's define a function r-use like this:
r-use: func [
"Defines words local to a block."
words [block!] "Local word(s) to the block"
body [block!] "Block to evaluate"
] [
do function [] words body
]
; and now use R-use instead of native Use
temporary: "global temporary"
recfun: func [level] [
r-use [temporary] [
if level < 1 [
temporary: "temporary"
recfun level + 1
print ["Temporary:" temporary]
]
]
]
recfun 0
; The result:
Temporary: temporary
Ladislav