We got the names wrong!
data PLZ a = AWSUM_THX a | O_NOES String
instance Monad PLZ where
return = AWSUM_THX
fail = O_NOES
O_NOES s >>= _ = O_NOES s
AWSUM_THX x >>= f = f x
Thanks to mauke on #haskell.
-- Don