这里记录一些 Haskell 相关的笔记. 内容很杂, 除了最常规的 Haskell 语法语义, 标准库之外, 也可能会有一些函数式编程习语, 设计模式等内容.
运算符顺序
函数式编程语言似乎总是避免不了括号地狱(笑话: 苏联特工偷走了美国代码的最后一页, 发现都是)
…). 不过我们可以在 Haskell 中妥善利用运算符顺序, 来减少括号的层数.
首先介绍一个概念: 结合性. 运算符的结合性决定了运算符在没有括号的情况下, 该如何结合. 例如, +
的结合性是左结合, 所以 1 + 2 + 3
等价于 (1 + 2) + 3
. 而 :
的结合性是右结合, 所以 1 : 2 : 3 : []
等价于 1 : (2 : (3 : []))
.