Defining a new monad in haskell raises no instance for Applicative

后端 未结 2 1404
太阳男子
太阳男子 2020-12-04 23:34

I am trying to define a new monad and I am getting a strange error

newmonad.hs

newtype Wrapped a = Wrap {unwrap :: a}
instance Monad Wrap         


        
2条回答
  •  -上瘾入骨i
    2020-12-05 00:05

    The most normalized and unobtrusive answer is :-

    as Monad is dependent upon Applicative

    class Applicative m => Monad m where ...

    and Applicative is dependent upon Functor

    class Functor f => Applicative f where ...

    we need the instance definitions

    > instance Functor Wrapped where
    >     fmap = liftM
    

    and

    > instance Applicative Wrapped where
    >     pure = return
    >     (<*>) = ap
    

提交回复
热议问题