Hi, I'm trying to implement some rule combinators. I'm hoping my combinators can change the state type implicitly passed around.
Basically, a rule should be something like: newtype Rule m u u' = ... where it takes an input u and returns type u' as the result. m represents an inner monad. For the supported operations, I'd like to bind my rules with compatible output and input types; `mplus` rules with same input and output types; 'try' a rule without changing state in m; tell if a rule succeeded or failed and take action accordingly. For the latter two, it has been pretty tricky to me. Looks like many monads don't support such functionality. It does not seem like possible to do this in a monad because Monad is for type constructors with only one parameter while Rule m u u' and Rule m u' u'' obviously cannot be in the same monad type. So, is this design inherently flawed or there's just no such implementation yet? Thanks. Ben. This message is intended only for the addressee and may contain information that is confidential or privileged. Unauthorized use is strictly prohibited and may be unlawful. If you are not the intended recipient, or the person responsible for delivering to the intended recipient, you should not read, copy, disclose or otherwise use this message, except for the purpose of delivery to the addressee. If you have received this email in error, please delete and advise us immediately. _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell
