At 3:39 PM +0000 8/22/05, Dinh Tien Tuan Anh wrote:
Hi,
Basically, my program has 7 threads for 7 rules

Rule1
Rule2
..
..
..


and they all use pattern-mattching (a rule MUST be evaluated by a thread)

The problem is there are some overlapping rules, which match the same pattern and diifferent rules are likely to give different results (one rule might give a result, others might loop forever).

Also, for a particular pattern, there's at least one matching rule and there may be some rule looping forever (try to evaluate a "bottom" _|_)

Im thinking of getting a list of all the applicable rules for a pattern, then hopefully can choose the best rule out of it. But we have no control over the scheduling of threads, so dont know when a thread finishs its evaluation (if it is applicable rule) or it just never terminates (rule that tries evaluating a _|_)

So any ideas ?

If you can't choose a single best rule, you could start a thread on each of the applicable rules and let them "race" each other. The first to complete would provide the result and terminate its "competitors". Concurrent Haskell (http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control.Concurrent.html) provides the facilities you'd need.

Dean
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to