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

[REBOL] Iterators & Functionids

From: robert::muench::robertmuench::de at: 27-Aug-2002 11:24

Hi, I try to get the following behaviour: test-action: [print "---" probe first iterator] test-predicate: [print type? list] forall-records object-list test-predicate test-action forall-records: func [list predicate action][ do predicate ; just for simple test ; iterate through the whole list of values ; check if the first entry satisfies the predicate ; if so execute the action forall list [if predicate [action]] ] I want to provide a predicate and an action that can use the parameters and local words. Of course the above code fails ** Script Error: list has no value What I came up with is a not so nice and IMO inflexible solution: forall-records: func [list predicate action][ if any [none? list empty? action][exit] ; iterate through the whole list of values ; check if the first entry satisfies the predicate ; if so execute the action forall list [if (predicate first list) [do action]] ] test-predicate: func [object][ either not none? (select object 'name) [true][false] ] forall-records object-list :test-predicate test-action I expect the first problem to be a binding problem. I read through the bindung stuff provided by Ladislaw but it's really hard... So how can the concept of C++ iterators, predicates, and functionids be implemented in Rebol? Did someone already wrote some generic functions for this? Robert