美文网首页
学习 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学习-函数式编程初探

    原文地址:Haskell学习-函数式编程初探  为什么要学习函数式编程?为什么要学习Haskell?  .net到...

  • haskell学习

    工具 haskell platform,直接百度安装. 打开控制台输入ghci即进入交互模式。 假如定义了myfu...

  • haskell学习

    基本变量类型Int:代表有范围的整数Integer: 代表没有范围的整数Float,Double,Bool,Cha...

  • 学习 Haskell

    上一次学习 Haskell 可以追溯到大二的时候,当时看了一本名为《七周七语言》的书,其中一门语言就是 Has...

  • Haskell学习-monad

    原文地址:Haskell学习-monad 什么是Monad Haskell是一门纯函数式的语言,纯函数的优点是安全...

  • Haskell学习-functor

    原文地址:Haskell学习-functor 什么是Functor functor 就是可以执行map操作的对象,...

  • Haskell: list 学习

    1, ++, :++: 用于两个 list 的相加 : 用于list中的元素和一个 list 的相加 !Note:...

  • 函数式的宗教-00: 认识lisp(clojure)与haske

    总体大纲: lisp与haskell简单介绍 lisp与haskell应用领域 lisp与haskell技术分析 ...

  • ReactiveCocoa框架学习步骤

    [ in ] 学习Haskell,了解函数式编程思想,http://learnyouahaskell.com/ch...

  • monad以及monad的四条定理

    haskell的范畴是hask范畴(haskell的所有类型隶属于hask范畴),所以haskell的所有函子都是...

网友评论

      本文标题:学习 Haskell

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