gpt4 book ai didi

haskell - `bind` 相当于加入(fmap f m)?

转载 作者:行者123 更新时间:2023-12-05 08:43:44 25 4
gpt4 key购买 nike

这个优秀answer在这个question演示如何根据 joinfmap 编写 bind:

(>>=)::m v -> (v -> m w) -> m w

says "if you have a strategy to produce a v, and for each v a follow-on strategy to produce a w, then you have a strategy to produce a w". How can we capture that in terms of join?

mv >>= v2mw = join (fmap v2mw mv)

但是,我不明白 v2mw 是如何检查 fmap 类型的 a -> m b 类型的>.

fmap::Functor f => (a -> b) -> f a -> f b

最佳答案

让我们说 v2mw::c -> m d,这样事情就不会模棱两可了,并且

fmap :: Functor f => (a -> b) -> f a -> f b

然后 fmap v2mw 计算出 f ~ m, a ~ cb ~ m d,所以

fmap v2mw :: m c -> m (m d)

join::m (m e) -> m e,因此 join (fmap v2mw mv) 具有预期的 m d 类型。

关于haskell - `bind` 相当于加入(fmap f m)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25577521/

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