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

Pro*_*mer 3 haskell types

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

我们知道,类型return是:: a -> m a和类型>=>是:: (a -> m b) -> (b -> m c) -> (a -> m c)所以,当我们申请>=>return和f,不会有成为一个类型不匹配,因为不会有我们(a -> m a) -> (b -> m c)的类型return分别楼这意味着如何我们>=>现在申请?

mel*_*ene 8

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

return :: a -> m a
(>=>)  :: (b -> m c) -> (c -> m d) -> (b -> m d)
Run Code Online (Sandbox Code Playgroud)

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

(a -> m a) = (b -> m c)
Run Code Online (Sandbox Code Playgroud)

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

因此我们有

a = b
a = c
Run Code Online (Sandbox Code Playgroud)

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

然后

(>=>) return :: (c -> m d) -> (b -> m d)
a = b
a = c
Run Code Online (Sandbox Code Playgroud)

是的

(>=>) return :: (a -> m d) -> (a -> m d)
Run Code Online (Sandbox Code Playgroud)

所以只要f :: a -> m d我们可以应用(>=>) returnf并获得相同类型回的值.