On Sun, Dec 17, 2006 at 01:35:49PM -0500, Chung-chieh Shan wrote: > David Roundy <[EMAIL PROTECTED]> wrote: > > class WitnessMonad wm where > > (>>=) :: wm w w' a -> (a -> wm w' w'' b) -> wm w w'' b > > (>>) :: wm w w' a -> wm w' w'' b -> wm w w'' b > > return :: a -> wm w w' a > > fail :: String -> wm w w' a > > I suspect that you want "w" and "w'" to be the same type in the types of > "return" and "fail".
You're right. That was silly of me. > Previous work: > > Atkey, Robert. 2006. Parameterised notions of computation. In MSFP 2006: > Workshop on mathematically structured functional programming, ed. Conor > McBride and Tarmo Uustalu. Electronic Workshops in Computing, British > Computer Society. http://homepages.inf.ed.ac.uk/ratkey/param-notions.pdf > > http://haskell.org/pipermail/haskell-cafe/2004-July/006448.html Hmmm. Those look interesting, but don't seem to address the question of trying this in actual Haskell. I don't see any reason why this overloading wouldn't work, except for the inconvenience of having to lift and unlift everything that's not in a fun monad. Do you? Mightn't there be a way around that issue? -- David Roundy Department of Physics Oregon State University _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe