
23 May
2007
23 May
'07
9:09 p.m.
Spencer,
How about:
do x ==> (x :: Monad m => m a)
That one does not do it, because now you demand x to be polymorphic in all monad types m and all monad-element types a, which I guess restricts x to undefined and return undefined and combinations thereof, glued together by monadic binds.
do x ==> (asTypeOf x (return ()))
Again, no, for now you restrict the element type to () and, hence, you preclude, for instance, do return False Cheers, Stefan