美文网首页
学习 Haskell

学习 Haskell

作者: FantasyShao | 来源:发表于2017-01-20 23:42 被阅读181次

    上一次学习 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)]
    

    相关文章

      网友评论

          本文标题:学习 Haskell

          本文链接:https://www.haomeiwen.com/subject/pshauttx.html