aXq*_*Xqd 3 haskell unary-operator ghci prefix-operator
在GHCi中:
- 序曲>(+3)2
5- 序曲>(*3)2
6- 前奏>(/ 3)2
0.6666666666666666- 前奏>( - 3)2
没有实例(Num(t - > t1))
来自文字':it =( - 3)23' at <interactive>:1:2
Possible fix: add an instance declaration for (Num (t -> t1))
In the expression: 3
In the expression: (- 3) 2
In the definition of
如何更正最后一个使其返回-1?
grd*_*dev 12
Haskell的语法不允许你这样使用-.请改用此subtract功能:
(subtract 3) 2Run Code Online (Sandbox Code Playgroud)
作为grddev答案的脚注,这里是Haskell 98报告中的相关段落:
特殊形式
-e表示前缀否定,Haskell中唯一的前缀运算符,并且是语法negate (e).二元-运算符不一定是指-Prelude中的定义 ; 它可能会被模块系统反弹.但是,一元-将始终引用negatePrelude中定义的函数.-操作符的本地含义与一元否定之间没有联系.
当我第一次碰到它时,这让我很沮丧:我无法理解为什么操作员在这种情况下表现得如此不同:info (+),:info (-)看起来基本相同.
您可以使用subtract,如grddev建议的那样,或者您可以只定义一个新的中缀运算符:
Prelude> let (#) = (-)
Prelude> (# 3) 2
-1
Run Code Online (Sandbox Code Playgroud)
subtract 具有熟悉其他可能阅读您的代码的人的优点.
| 归档时间: |
|
| 查看次数: |
2039 次 |
| 最近记录: |