如何返回> =>在Haskell工作?

时间:2017-07-25 08:24:00

标签: haskell types

特别是,我的问题是如何认为这与f本身相同?

我们知道return的类型是:: a -> m a>=>的类型是:: (a -> m b) -> (b -> m c) -> (a -> m c)所以当我们将>=>应用于{{ 1}}和f,不会出现类型不匹配,因为我们不会return分别为(a -> m a) -> (b -> m c)和f的类型,这意味着我们怎样才能应用{{1}现在?

1 个答案:

答案 0 :(得分:8)

让我们重命名一些类型变量以避免混淆:

return :: a -> m a
(>=>)  :: (b -> m c) -> (c -> m d) -> (b -> m d)

当我们申请(>=>) return时,我们需要制作

(a -> m a) = (b -> m c)

return的类型和>=>的第一个参数的类型)。

因此我们有

a = b
a = c

(因此b = c也是如此。)

然后

(>=>) return :: (c -> m d) -> (b -> m d)
a = b
a = c

(>=>) return :: (a -> m d) -> (a -> m d)

因此,只要f :: a -> m d,我们就可以将(>=>) return应用于f并获得相同类型的值。