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