Is `data PoE a = Empty | Pair a a` a monad?
问题 This question comes from this answer in example of a functor that is Applicative but not a Monad: It is claimed that the data PoE a = Empty | Pair a a deriving (Functor,Eq) cannot have a monad instance, but I fail to see that with: instance Applicative PoE where pure x = Pair x x Pair f g <*> Pair x y = Pair (f x) (g y) _ <*> _ = Empty instance Monad PoE where Empty >>= _ = Empty Pair x y >>= f = case (f x, f y) of (Pair x' _,Pair _ y') -> Pair x' y' _ -> Empty The actual reason why I believe