Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

[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/