Hi Joel,
I think this is a better generalization:
>> source repoke
repoke: func [
"sets value within nested blocks"
block [block! hash! function! object!]
indexes [block!]
value [any-type!]
][
indexes: reduce indexes
while [1 < length? indexes] [
block: pick :block first indexes
indexes: next indexes
]
poke block first indexes value
]
>> a3: array [3 3 3]
== [[[none none none] [none none none] [none none none]] [[none none ...
>> repoke a3 [1 1 1] "something"
== ["something" none none]
>> a3
== [[["something" none none] [none none none] [none none none]] [[none ...
plus it's companion:
>> source repick
repick: func [
"picks repeatedly"
block [any-block! any-function! object!]
indexes [block!]
][
foreach i reduce indexes [block: pick :block i]
:block
]
Eric
>Try the following...
>
> >> a: array [4 4]
> == [[none none none none] [none none none none]
> [none none none none] [none none none none]]
> >> a
> == [[none none none none] [none none none none]
> [none none none none] [none none none none]]
> >> poke pick a 2 3 "Hello!"
> == [none none "Hello!" none]
> >> a
> == [[none none none none] [none none "Hello!" none]
> [none none none none] [none none none none]]
>
>Sorta uggggly, but easy to wrap into a func ...
>
> >> set2d: func [b [block!] d1 [integer!] d2 [integer!] x] [
> [ poke pick b d1 d2 x
> [ ]
> >> set2d a 3 2 "Goodbye!"
> == [none "Goodbye!" none none]
> >> a
> == [[none none none none] [none none "Hello!" none]
> [none "Goodbye! none none] [none none none none]]
>
>.... and to generalize ...
>
> >> a3: array [3 3 3]
> == [[[none none none] [none none none] [none none none]]
> [[none none none] [none none none] [none none none]]
> [[none none none] [no...
> >> set3d: func [
> [ b [block!] d1 [integer!] d2 [integer!] d3 [integer!] x][
> [ poke pick pick b d1 d2 d3 x
> [ ]
> >> set3d a3 1 2 3 "YOW!"
> == [none none "YOW!"]
> >> a3
> == [[[none none none] [none none "YOW!"] [none none none]]
> [[none none none] [none none none] [none none none]]
> [[none none none] [...
> >>
>
>.... to even higher planes of existence.
>
>-jn-