Monads =函子+幂等(类型)?

时间:2018-10-26 01:45:49

标签: haskell monads

在Haskell中,单子词由kleisli Triple定义。

一般来说,范畴论可以说:

单子=函子+单子类型的Idempotency(不是值)?

1 个答案:

答案 0 :(得分:8)

不,一个单子论不是强幂等的:尽管有一个自然变换的要求

mu_x : T(T(x)) -> T(x)

通常情况下,不是以这种方式选择的两个对象相等,即

T(T(x)) = T(x)

通常不成立,甚至直到同构。

即使在Haskell Monad的受限地区,也很容易看到这一点:Maybe (Maybe ())Maybe ()显然是不相等的类型,具有不同数量的语义对象。忽略底部:

Nothing, Just () -- Maybe ()
Nothing, Just Nothing, Just (Just ()) -- Maybe (Maybe ())

或有底:

_|_, Nothing, Just _|_, Just () -- Maybe ()
_|_, Nothing, Just _|_, Just Nothing, Just (Just _|_), Just (Just ()) -- Maybe (Maybe ())