
Am 05.02.2008 um 21:27 schrieb Dan Weston:
Matthew,
Your SuperMonad seems remarkably similar to Gabor Greif's Thrist datatype [1,2] reported only six days ago on this list [3].
Can you compare/contrast your class approach with his polymorphic type approach? Or have I completely confused the two because of the similar kind of their arguments?
data Thrist :: (* -> * -> *) -> * -> * -> * where Nil :: Thrist p a a Cons :: p a b -> Thrist p b c -> Thrist p a c
data Arrow' :: (* -> * -> *) -> * -> * -> * where Arr :: Arrow a => a b c -> Arrow' a b c First :: Arrow a => Arrow' a b c -> Arrow' a (b, d) (c, d)
For the record, I have done the monad into thrist embedding now: http://heisenbug.blogspot.com/2008/02/embeddings-part-two-monad- thrist.html Will start pondering about mfix and restricted monads now. Cheers, Gabor