gpt4 book ai didi

haskell - 什么 Haskell 类型系统魔法允许定义连接?

转载 作者:行者123 更新时间:2023-12-03 14:56:53 24 4
gpt4 key购买 nike

join效用函数定义为:

join :: (Monad m) => m (m a) -> m a
join x = x >>= id

鉴于 >>= 的类型是 Monad m => m a -> (a -> m b) -> m bida -> a ,该函数怎么也可以输入为 a -> m b因为它必须在上面的定义中?什么是 mb在这种情况下?

最佳答案

a >>= 的类型中的 s和 id不一定相同a s,所以让我们重述一下这样的类型:

(>>=)    :: Monad m => m a     -> (a -> m b) -> m b
id :: c -> c

所以我们可以得出 ca 相同毕竟,至少当 id>>= 的第二个参数...还有 cm b 相同.所以 am b 相同.换句话说:
(>>= id) :: Monad m => m (m b) ->               m b

关于haskell - 什么 Haskell 类型系统魔法允许定义连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10253461/

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