最近想学这门语言,于是做了一些准备工作,配置好一切后,打算玩一玩。
先扔一段官方简介:
Introduction
Haskell is a computer programming language. In particular, it is a polymorphically statically typed, lazy, purely functional language, quite different from most other programming languages. The language is named for Haskell Brooks Curry, whose work in mathematical logic serves as a foundation for functional languages. Haskell is based on the lambda calculus, hence the lambda we use as a logo.
Haskell 的好处(google翻译):
- 大大提高了程序员的工作效率(爱立信在使用电话软件的一组实验中使用Erlang,一种类似于Haskell的函数式编程语言测量了9到25之间的改进因子)。
- 更短,更清晰,更易维护的代码。
- 更少的错误,更高的可靠性。
- 程序员和语言之间较小的“语义鸿沟”。
- 交货时间更短。
Haskell是一种广泛的语言,适用于各种应用程序。它特别适用于需要高度可修改和可维护的程序。
软件产品的许多生命都花在规范, 设计和维护上,而不是编程中。函数式语言对于编写可以实际执行(因此经过测试和调试)的规范而言是极好的。这样的规范是最终程序的第一个原型。
程序也相对容易维护,因为代码更短,更清晰,副作用的严格控制消除了一大类无法预料的交互。
从上面了解介绍到Haskell是一种函数式语言,那么什么是函数式语言?了解函数式语言前,我先了解一点lambda演算及函数式编程的历史。
然后通过前面的一些资料,大概了解到函数式编程与以往C/Java等语言的最大不同之处在于,后者是命令式语言,他们必须按照指令一条一条的执行,一个程序中每一条指令都是不可缺少的。所以函数式编程是一种非冯诺依曼体系结构的编程方式。比较命令式,函数式更符合人的行为,函数式程序代码很直观,他们就像简明的数学表达式一样。
显然C++/python等的lambda表达式就是函数式的语法。
然后,一点自己体验GHCI命令行界面的记录:
按 ctrl + L 是清屏; 按 ctrl + I 显示506个操作/运算命令符?(display all 506 possibilities) 按 ctrl + J 等于按回车键; 按 ctrl + R 可以通过输入字符/字串匹配查找键入过的命令中出现过的输入字符/字串的命令; 按 ctrl + S 与上一个类似; 按 ctrl + P 可以向前查找键入过的命令; 按 ctrl + D 删除当前光标位置上的字符,如果没有字符且使用该命令前键入的是其他不显示命令(比如退格键、其他ctrl命令),则退出GHCI; 按 ctrl + A 将光标移动到字符串的第一个字符上; 按 ctrl + E 将光标移动到最后一个字符后面; 按 ctrl + F 是将光标往后移动一个字符; 按 ctrl + K 是删除当前光标位置上及之后的所有字符 按 ctrl + W 删除当前光标位置以前的字符直到有一个空格停止; 按 ctrl + T 可交换当前光标位置上的字符与光标位置前一个字符的位置,交换后光标位置不变,如果光标在字符串后,则交换光标前两个字符之间的位置; 按 ctrl + C 可退出GHCI,也可换行。 键入 ‘:quit’ 退出GHCI。 键入命令 ‘:?’ ro ‘:help’ 可以查看一些命令。
最后,给一个示例: