> (*WARNING* *HYPOTHETICAL SYNTAX FOLLOWS*)
> 
>   use [diffs] [
>       diffs: make tally []
>       foreach num bunchanums [
>           diffs/(either even? num [up] [down])/by num
>       ]
>       print ["net sum:" diffs/now?]
>   ]
> 

i like this hypothetical stuff, so you got it
 almost as you wish :



REBOL []

imbc: func [ items [block!] /local imbc-blok][
    items: copy/deep items
    forall items [
        if path? first items [
            imbc-blok: next make block! first items
            forall imbc-blok [
                if tag? first imbc-blok [
                    change imbc-blok do bind make block! first imbc-blok
'print
                ]
            ]
            change/only items make path! head imbc-blok
        ]
    ]
    head items
]

bunchanums: [3 1 35 8 4 5 52 42 19 13 32 43 81 2 6 34 46]
tally: make object! [
    tot: 0
    zero: does [tot: 0]
    up:   func [/by n [number!]] [tot: tot + either by [n] [1]]
    down: func [/by n [number!]] [tot: tot - either by [n] [1]]
    now?: does [tot]
]
use [diffs ][
    diffs: make tally []
    foreach num bunchanums [
        num2: num ; due to binding/context problem
        do probe imbc [diffs/<either even? num2 ['up] ['down ]>/by
num2]     ; <-- SEE?
    ]
    print ["net sum:" diffs/now?]
]
 
halt

[diffs/down/by num2]
[diffs/down/by num2]
[diffs/down/by num2]
[diffs/up/by num2]
[diffs/up/by num2]
[diffs/down/by num2]
[diffs/up/by num2]
[diffs/up/by num2]
[diffs/down/by num2]
[diffs/down/by num2]
[diffs/up/by num2]
[diffs/down/by num2]
[diffs/down/by num2]
[diffs/up/by num2]
[diffs/up/by num2]
[diffs/up/by num2]
[diffs/up/by num2]
net sum: 26
>>

and somthing strange:

>> imbc [ a/<"REBOL">]
[a/"REBOL"]
== [a/"REBOL"]

>> [a/"REBOL"]
** Syntax Error: Invalid path -- a/.
** Where: (line 1) [a/"REBOL"]
>>


karol

Reply via email to