Hi, Tim,

Tim Johnson wrote:
> 
> Hello All:
>         I would like to apply the same operation to all members
> of a nested block.
> ;Example:
> blk: [[1 2 3 4] [5 6 7 8] [9 10 11 12] [13 14 15 16 17] "one"]
> blk: do-all blk next ; set all members to next element
> ;result sought:
> >>[[2 3 4] [6 7 8] [10 11 12] [14 15 16 17] "ne"]

Sounds like a job for MAP to me...

    >> blk: [[1 2 3 4] [5 6 7 8] [9 10 11 12] [13 14 15 16 17] "one"]
    == [[1 2 3 4] [5 6 7 8] [9 10 11 12] [13 14 15 16 17] "one"]

... then ...

    map: function [[catch] b [block!] f [function!] /all] [r v] [
        r: make block! length? b
        foreach c b [
            if any [found? v: do [f c] all] [append/only r v]
        ]
        r
    ]

... and, finally ...

    >> map blk func [s][next s]
    == [[2 3 4] [6 7 8] [10 11 12] [14 15 16 17] "ne"]

... or ...

    >> x: map blk func [s] [next s]
    == [[2 3 4] [6 7 8] [10 11 12] [14 15 16 17] "ne"]
    >> x: map x func [s] [next s]
    == [[3 4] [7 8] [11 12] [15 16 17] "e"]
    >> map x func [s] [head s]
    == [[1 2 3 4] [5 6 7 8] [9 10 11 12] [13 14 15 16 17] "one"]

HTH!

-jn-


-- 
"This sentence contradicts itself -- no actually it doesn't."
-- Doug Hofstadter
                              joel<dot>neely<at>fedex<dot>com
-- 
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the 
subject, without the quotes.

Reply via email to