Haskell中一元运算符的前缀形式
在GHCi中:Haskell中一元运算符的前缀形式,haskell,ghci,unary-operator,prefix-operator,Haskell,Ghci,Unary Operator,Prefix Operator,在GHCi中: 序曲>(+3)2 五, 序曲>(*3)2 六, 序曲>(/3)2 0.66666666 前奏曲>(-3)2 (Num(t->t1))没有实例 源于1:2处的文字3' 可能的修复方法:为(Num(t->t1))添加实例声明 在表达式中:3 在表达式中:(-3)2 在it的定义中:it=(-3)2 如何更正最后一个,使其返回-1?Haskell的语法不允许您这样使用-。改用减法功能: (subtract 3) 2 你能行 (-) 3 2 但这会给你1。要得到-1,需要将3绑定到-,
五,
六,
0.66666666
(Num(t->t1))没有实例
源于1:2处的文字
3'
可能的修复方法:为(Num(t->t1))添加实例声明
在表达式中:3
在表达式中:(-3)2
在
it的定义中:it=(-3)2如何更正最后一个,使其返回-1?Haskell的语法不允许您这样使用
-
。改用减法功能:
(subtract 3) 2
你能行
(-) 3 2
但这会给你1。要得到-1,需要将3绑定到-,的第二个参数,可以使用
flip (-) 3 2
作为脚注,以下是以下文件中的相关段落:
特殊形式-e
表示前缀
negation,中唯一的前缀运算符
Haskell,是否定的语法
(e)
。二进制-
运算符不可用
必须参考
-
在序曲中;它可能会被模块系统反弹。但是,一元-
将始终引用否定
前奏曲中定义的功能。那里
地方意义之间没有联系
-
运算符和一元求反
当我第一次遇到它时,这让我很沮丧:我不明白为什么在这个上下文中,当:info(+)
和:info(-)
看起来基本相同时,操作符的行为会如此不同
您可以使用grddev建议的减法,也可以定义一个新的中缀运算符:
Prelude> let (#) = (-)
Prelude> (# 3) 2
-1
subtract
的优点是,其他人可能会熟悉您的代码。如果您想保持原始形状,可以添加负片:
(+ -3)
它不漂亮,但更符合你的模式。是的,他应该说(+(-3))
。要生成负数,需要使用括号中的-
和数字。另一种(可能有点难看)方法是(-3+)2
。