序幕
合乎逻辑
== 是相等, /= 不相等, < / <= 较小,> / >= 较大的运算符。
算术运算符
数值运算符 + , - 和 /的表现与你期望的大致相同。 (除法仅适用于小数以避免舍入问题 - 必须使用 quot或 div进行整数除法 )。Haskell 的三个取幂运算符更不寻常:
- 
^将任意数字类型的基数转换为非负整数幂。这通过( 快速 )迭代乘法简单地起作用。例如4^5 ≡ (4*4)*(4*4)*4
- 
^^在正面情况下也是如此,但也适用于负指数。例如3^^(-2) ≡ 1 / (2*2)与 ^不同,这需要一个基本类型(即4^^5 :: Int不起作用,只有4^5 :: Int或4^^5 :: Rational)。
- 
**实现实数指数运算。这适用于非常一般的参数,但比^或^^更昂贵,并且通常会产生小的浮点错误。2**pi ≡ exp (pi * log 2)
清单
有两个连接运算符:
- 
:(发音为 cons )在列表之前添加一个参数。该运算符实际上是一个构造函数,因此也可用于模式匹配 (逆构造)列表。
- 
++连接整个列表。[1,2] ++ [3,4] ≡ 1 : 2 : [3,4] ≡ 1 : [2,3,4] ≡ [1,2,3,4]
!! 是一个索引运算符。
[0, 10, 20, 30, 40] !! 3  ≡  30
请注意,索引列表效率低(复杂度为 O ( n )而不是数组的 O (1) 或映射的 O (log n ) ); 在 Haskell 中通常首选通过折叠模式匹配而不是索引来解构列表。 ** **
控制流
- 
$是一个函数应用程序运算符。f $ x ≡ f x ≡ f(x) -- disapproved style此运算符主要用于避免括号。它还有一个严格的版本 $!,它强制在应用函数之前评估参数。
- 
.组成功能。(f . g) x ≡ f (g x) ≡ f $ g x
- 
>>序列 monadic 行动。例如,writeFile "foo.txt" "bla" >> putStrLn "Done."将首先写入文件,然后将消息打印到屏幕。
- 
>>=做同样的事情 ,同时也接受从第一个动作传递到下一个动作的参数。readLn >>= \x -> print (x^2)将等待用户输入一个数字,然后将该数字的平方输出到屏幕。