学习 Haskell

上一次学习 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)]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容