module EmptyMonad
( EmptyMonad
) where
import Control.Monad
data EmptyMonad a = EmptyMonad
{ myValue :: a
, myState :: Int
} deriving (Show)
instance (Eq a) => Eq (EmptyMonad a) where
EmptyMonad x1 y1 == EmptyMonad x2 y2 = x1 == x2 && y1 == y2
instance Monad (EmptyMonad a) where
return x = EmptyMonad x 0
(EmptyMonad x y) >>= f = EmptyMonad x (y + 1)
在单子上花了几个小时后,我无法理解编译器的错误:
EmptyMonad.hs:16:10: error:
⢠Expecting one fewer argument to âMonad EmptyMonadâ
Expected kind âk0 -> Constraintâ,
but âMonad EmptyMonadâ has kind âConstraintâ
⢠In the instance declaration for âMonad EmptyMonad aâ
Failed, modules loaded: none.