在Haskell中,/=运算符是什么意思?

35

我正在阅读《学习 Haskell》这本书,其中提到了5 /= 5。我不太确定这是什么意思。第一个表达式是否表示5 / 5 = 5?但是,那么它应该不是True


4
不等于:!= - Rizier123
9
下次请使用:https://www.haskell.org/hoogle/。 - Rizier123
1
@Rizier123 给了我 (/=) :: a -> a -> Bool infix 4,但对于初学者来说并不是很有帮助... - mhutter
1
@mhutter 你点击了链接吗? - Rizier123
1
@Rizier123 是的!啊,现在我明白了。因为浏览器标签冻结了,所以我没有看到上面的描述,我以为我在页面顶部。我的错 :) - mhutter
但这样它就不应该是True了。它并不是True。 - sepp2k
3个回答

51

它表示不等于。所以5 /= 5false,因为5 == 5true

x /= y = not (x == y)

正如建议的那样,它提醒了数学符号 "≠" (/=),与 "=" (==) 相反。


它是一个等号上面加了一个斜线,即表示不相等。 - doron
8
Haskell中"!="的等效写法是什么? - Bobbbay

21

== 运算符表示“相等”。

/= 运算符表示“不相等”。

它类似于数学中的“≠”符号,即等号上方带有一条对角线。


4

这是“不等于”运算符。

各种编程语言使用的符号有!=<>等等... Haskell使用/= ;)

使用:t可以告诉你类型:

> :t (/=)
(/=) :: Eq a => a -> a -> Bool

2
顺便提一下,Data.Monoid 模块还导出了一个 <> 运算符,它不是指“不等于”,而是 mappend 的同义词。 - jub0bs
没错。从类型上看,我们可以看到它完全做了不同的事情:(<>) :: Monoid m => m -> m -> m - vikingsteve
超级新手在这里:如何阅读 :t 的输出,我看到了三次 a ;) - WestCoastProjects
2
在类型 a 可以进行相等性测试的情况下,运算符 /= 接受两个该类型的参数并返回一个布尔值。 - vikingsteve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接