gpt4 book ai didi

haskell - 理解 (.) 的类型签名

转载 作者:行者123 更新时间:2023-12-03 13:40:07 26 4
gpt4 key购买 nike

我刚刚使用 Richard Bird 的书学习 Haskell 和函数式编程,并遇到了 (.) 函数的类型签名。即

(.) :: (b -> c) -> (a -> b) -> (a -> c)

和相关的定义
(f . g) x = f (g x)

我了解运算符(operator)在做什么,但对如何读取类型签名有点困惑。是不是说 (.) 将 (b -> c) 类型的函数作为其第一个参数,然后返回 (a -> b) 类型的函数,最后返回 (a -> c) 类型的函数?这是读取类型签名的正确方法吗?

另外,这可能是一个柯里化(Currying)的例子,其中 (.) 是一个带有两个参数的柯里化(Currying)函数吗?或者这不是思考 curry 的正确方法吗?

最佳答案

你几乎得到它,它需要一个 b -> c并返回一个函数 (a -> b) -> (a -> c)其中,当给出 (a -> b)返回一个函数 a -> c .知道在 Haskell 中,您可以将运算符包装在括号中并使用它作为前缀,这也可能会有所帮助

f . g === (.) f g

现在更容易看到 curry
((.) f) g === f . g

最后,注意这个类型签名等价于
(b -> c) -> (a -> b) -> a -> c

由于 ->是右联想。

关于haskell - 理解 (.) 的类型签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20777106/

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