gpt4 book ai didi

haskell - Haskell 中函数组合的优先级是什么?

转载 作者:行者123 更新时间:2023-12-02 10:49:08 26 4
gpt4 key购买 nike

我在课本上看到了这段代码:

double :: (Num a) => a -> a
double x = x * 2

map (double.double) [1,2,3,4]

我不明白的是,如果函数组合操作具有最高优先级,为什么要使用括号来包含 double.double?如果我删除这些括号,我会收到错误消息。那么函数组合的优先级到底是什么?

最佳答案

所有内置运算符各自的优先级和固定性都可以在 Haskell Report section 4.4.2 中找到。 。特别是,.!! 的优先级为 9,这是运算符中最高的。然而,函数应用程序不是运算符。函数应用程序经过专门设计,其优先级高于任何运算符,因此

map (double.double) [1,2,3,4]

这是应用函数 double 。 double 到列表的每个元素 [1, 2, 3, 4]

map double.double [1,2,3,4]

这是尝试组合函数 map doubledouble [1, 2, 3, 4],这不太可能成功(尽管从技术上来说这并不不可能)。

关于haskell - Haskell 中函数组合的优先级是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52133440/

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