Monad
是一个幺半群,但它是一个不同于它的幺半群Integer
.我不知道是否有写的方式Monoid'
,并Monad'
使得这两个Integer
和Monad'
可表示为相同的实例Monoid'
的类型类?
所以,让我们选择一个特定的方式Integer
有Monoid
instance Monoid Int where
zero = 0
plus = (+)
Run Code Online (Sandbox Code Playgroud)
现在这是一个 Monad
Monoid
{-# LANGUAGE FlexibleInstances #-}
instance Monad m => Monoid (Kleisli m a a) where
zero = id
plus = (.)
Run Code Online (Sandbox Code Playgroud)
而这是另一个
instance MonadPlus m => Monoid (m a) where
zero = mzero
plus = mplus
Run Code Online (Sandbox Code Playgroud)
然而,我不确定如何在Haskell中表达"Monad是endofunctors类别中的monoid".