gpt4 book ai didi

haskell - 函数中缀时的运算符优先级(Haskell)

转载 作者:行者123 更新时间:2023-12-04 09:40:16 25 4
gpt4 key购买 nike

使函数中缀以某种方式改变它的优先级吗?
如果我写

3 `take` reverse "123456789"

在 ghci 中,它返回 987 ,但如果我写
take 3 reverse "123456789"

我收到一个错误,大概是因为它将它解释为 (take 3 reverse) "123456789" 并且我不能将 reverse 作为参数传递。为什么它不以这种方式解释第一个语句?函数应用不是右结合的吗?

最佳答案

是的, 3 `take` reverse "123456789" 被解析为 (3) `take` (reverse "123456789") ,所以 take (3) (reverse "123456789")

现在 take 因此是一个运算符,并且运算符具有较低的优先级。正如 Haskell 报告中所述:

Any operator lacking a fixity declaration is assumed to be infixl 9.



所以 take 在这里有固定性 9。如果你因此将它用作:
'0' :  3 `take` reverse "1234567890" 

它将被解析为:
'0' : (3 `take` reverse "1234567890")

因为 : 具有固定性 infixr 5

关于haskell - 函数中缀时的运算符优先级(Haskell),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62363623/

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