[REBOL] TECHNICAL ESSAY/CHALLENGE(s) - "Expression Based"? Re:(3)
From: al:bri:xtra at: 3-Oct-2000 0:45
And this is more like the Rebol way, as I imperfectly understand it:
[
Rebol [
File: %"Tally Ho.r"
]
Tally!: make object! [
make-Tally: does [make object! [Total: 0]]
Zero: func [Tally [object!]] [Tally/Total: 0 Tally]
Up: func [Tally [object!] /by N [number!]] [
Tally/Total: Tally/Total + either by [N] [1] Tally
]
Down: func [Tally [object!] /by N [number!]] [
Tally/Total: Tally/Total - either by [N] [1] Tally
]
Now?: func [Tally [object!]] [Tally/Total]
]
bunchanums: [3 1 35 8 4 5 52 42 19 13 32 43 81 2 6 34 46]
do bind [
use [diffs evens odds] [
diffs: make-Tally
evens: make-Tally
odds: make-Tally
foreach num bunchanums [
either even? num [
Up/by Diffs num
Up/by Evens num
][
Down/by Diffs num
Up/by Odds num
]
]
print now? Diffs
print now? evens
print now? odds
]
] in Tally! 'self
]
>> do %"Tally Ho.r"
26
226
200
Note how small the actual tally object is: "[Total: 0]". Also note that the
binding is used like a dialect, but allows arbitrary Rebol script to be
used.
Andrew Martin
ICQ: 26227169
http://members.nbci.com/AndrewMartin/
http://members.xoom.com/AndrewMartin/