Monad
是一个单子,但它与例如 Integer
不同的是以不同的方式成为了单子。我想知道是否有一种方法可以编写 Monoid'
和 Monad'
,使得 Integer
和 Monad'
都可以表示为相同的 Monoid'
类型类的实例?
Monad
是一个单子,但它与例如 Integer
不同的是以不同的方式成为了单子。我想知道是否有一种方法可以编写 Monoid'
和 Monad'
,使得 Integer
和 Monad'
都可以表示为相同的 Monoid'
类型类的实例?
Integer
成为一个Monoid
。instance Monoid Int where
zero = 0
plus = (+)
现在介绍一下 Monad
和 Monoid
{-# LANGUAGE FlexibleInstances #-}
instance Monad m => Monoid (Kleisli m a a) where
zero = id
plus = (.)
and here's another
instance MonadPlus m => Monoid (m a) where
zero = mzero
plus = mplus
我不确定如何在Haskell中直接表达“Monad是函子范畴中的幺半群”这个概念。