gpt4 book ai didi

haskell - Haskell Monad 法则如何从 Monoid 法则推导出来?

转载 作者:行者123 更新时间:2023-12-04 16:36:04 26 4
gpt4 key购买 nike

内仿函数类别中幺半群的定律是:

monoid laws

Haskell monad 法则是:

左恒等式:return a >>= k = k a

正确的身份:m >>= return = m

结合性:m >>= (\x -> k x >>= h) = (m >>= k) >>= h

我假设后者是从前者派生出来的,但这是怎么回事呢?图表基本上说

join (join x) = join (fmap join x)
join (return x) = x
join (fmap return x) = x

这些如何等同于 Haskell monad 法则?

最佳答案

要从 join-monad 法则中显示 >>=-monad 法则,需要在中定义 x >>= y乘法 (join)、单位 (return) 和函数性 (fmap),因此我们需要让,根据定义,

(x >>= y) = join (fmap y x)

左恒等式

则左恒等式变为

return a >>= k = k a

根据>>=的定义,相当于

join (fmap k (return a)) = k a

现在,return 是一个自然变换 I -> T(其中 I 是恒等仿函数),所以 fmap_T k .返回=返回。 fmap_I k = 返回。 k。我们将法律简化为:

join (return (k a)) = k a

这遵循 join 法则。

权利同一律

权利同一律

m >>= return = m

根据 >>= 的定义减少到:

join (fmap return m) = m

这正是 join 法则之一。

结合律留给你来证明。它应该遵循使用相同的工具(join 法则、自然性、仿函数性)。

关于haskell - Haskell Monad 法则如何从 Monoid 法则推导出来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69668056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com