gpt4 book ai didi

haskell - 在多参数函数上使用美元符号

转载 作者:行者123 更新时间:2023-12-02 14:01:17 25 4
gpt4 key购买 nike

Prelude> p a b c=1
Prelude> p $ 2 $ 2 $ 5
tons of error......
Prelude> ($$)=($)
Prelude> p $$ 2 $$ 2 $$ 5
1
Prelude>p $$ [2..3] $$ 4 $$ 5
1
Prelude>p $$ [1]++[2..3] $$ 4 $$ 5
tons of error......
Prelude>p $$ [1]++[2..3] $$ [1]++[2..3] $$ 5
of course, tons of error......

问题1:为什么 ($) 不适用于“p $ 2 $ 2 $ 5”?

问题2:为什么 ($$) 适用于“p $$ 2 $$ 2 $$ 5”?

问题3:为什么 ($$) 不适用于“p $$ [1]++[2..3] $$ 4 $$ 5”?

问题4:有没有更优雅的方法来正确编写“p $$ [1]++[2..3] $$ [1]++[2..3] $$ 5”?

最佳答案

由于其固定性规范,答案在于运算符优先级。

($) 的优先级为 0,并且与右侧关联,如

所示
Prelude> :i ($)
...
infixr 0 $

如果您希望自定义运算符具有您建议的优先级和关联性,则需要将固定性声明添加到代码中:

infixl 0 $$

关于haskell - 在多参数函数上使用美元符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50636360/

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