I'll point out quickly that what you're trying to do is generally
considered a bad programming practice, i.e. referencing a variable
internal to a function from its argument. A caller shouldn't need to know
about and shouldn't really have direct access to variables local to a
function.

I will however provide an example of how to do what I think you're trying
to do and recommend that you rethink your approach in any case because
this is almost as bad but I think it demonstrates that your problem was
perhaps not one as much of scope but more of tokenization:

>> letter2: func [b][foreach n ["sally" "sue"][print replace (copy b) 'name n]]
>> greeting: ["hi" name "welcome back"]
== ["hi" name "welcome back"]
>> {I prefer not to overwrite REBOL words, like "form" from your example}
== {I prefer not to overwrite REBOL words, like "form" from your example}
>> name: "bob"
== "bob"
>> letter2 greeting
hi sally welcome back
hi sue welcome back
>> 


FWIW,

<SS>



On Thu, 7 Sep 2000 [EMAIL PROTECTED] wrote:

> >> letter2: func [b /local name] [foreach n ["sally" "sue"][ name: n print reform 
>reduce b] ]
> 
> >> form
> == ["hi" name "welcome back"]
> 
> >> name
> == "bob"
> 
> >> letter2 form
> hi bob welcome back
> hi bob welcome back
> 
> ... the only problem is I was hoping that the loop values in letter2 would take 
>precedence over the globally bound value of name and allow me to create a form letter 
>of sorts.
> 
> Could anyone help with this please?
> 
> 
> 
> Get your FREE Email and Voicemail at Lycos Communications at
> http://comm.lycos.com
> 
> 

Reply via email to