上一次学习 Haskell 可以追溯到大二的时候,当时看了一本名为《七周七语言》的书,其中一门语言就是 Haskell。当然,所谓七周七语言也只是一个噱头,让读者能够初窥编程语言的门径而已。
这次学习 Haskell 其实是我在 2017 年的一个心愿之一 -- 学习一门新的编程语言。
主要阅读材料为《Haskell 趣学指南》以及各种网络资源。
学习的第一步,自然是安装 Haskell 了。
如果你是用的 macOS 并且安装了 Homebrew 的话,安装 Haskell Platform 就非常简单了:
brew cask install haskell-platform
Haskell Platform 包含了 Haskell 最常用的编译器 GHC 以及一系列有用的库。
其他平台获取 Haskell Platform 可以参考 haskell.org/platform 中的内容。
Haskell 中一些比较有趣的地方
每一门语言都会有一些比较有趣的地方,这里记录一些学习过程中觉得比较有趣的地方。
列表推导
列表推导,即 List Comprehension,是一种用来组合转换列表的方法。
在 Haskell 中,我们可以像描述数学问题一样来描述一个列表表达式,例如:
> [ x * 2 | x <- [1..10]]
[2,4,6,8,10,12,14,16,18,20]
通过描述列表中值的取值方式和规则,获得了一个想要的元素列表。
接下来,也许有一些更为常见的数学问题,例如:获得 100 以内所有 6 的倍数,同样我们可以用列表推导的方式快速获得:
> [x | x <- [1..100], mod x 6 == 0]
[6,12,18,24,30,36,42,48,54,60,66,72,78,84,90,96]
例如还有一个计算直角三角形的问题:斜边的长度为 1-10 之间的整数,求可能的三角形边长。
> [(a,b,c) | a <- [1..10], b <- [1..a], c <- [1..b], b^2 + c^2 == a^2]
[(5,4,3),(10,8,6)]
网友评论