Haskell趣学指南学习日记(2)

原创 2015年07月08日 15:24:08

列表推导式


在Haskell中,列表推倒式绝对是我见过最厉害的推倒了(什么鬼),哦不是,是最厉害的一个特性了。还记得我在小学一年级的时候,在公堂之上。。。不对,是高中的时候,接触到了列表推倒式。它的语法十分简洁,而且强大。那么废话不多说,先来看第一个例子:

一目了然,如果我们要接多个谓词的话,在后面使用逗号进行连接:

除此之外,还可以添加多个变量:


在这里,我们也可以很清除地知道列表推倒式遍历的顺序。

列表推倒式同样可以用于列表:

元组


元组虽然很像列表,但和列表有着本质的不同。列表是单一类型的,也就是说,里面的元素类型是相同的,但元组是不同的。

比如我们使用元组,可以定义如下变量:

(3,'as',98,'hi')

元组的类型是按照元素数量来划分的,比如下列两个元组的类型是不同的:

meta1 = (1,32,'s')
meta2 = (1,32)

也就是说,当你写下如下代码时编译器会报错:


列表中的元素的类型必须相同

序对

当一个元组的元素数量为两个时,它就被成为序对。
这里有三个函数比较重要:


他们分别被用来返回键,返回值,使用列表来创建序列。

找直角三角形


我们综合运用元组和列表推倒式来查找在一定范围内的所有直角三角形:

  • 三边长均为整数
  • 三边长度均小于等于10
  • 周长为24的直角三角形

使用列表推导式实在是一件太过轻松的事情了:

版权声明:如果你觉得作者有什么错误的地方,可以在评论区里指出来。

相关文章推荐

Haskell趣学指南学习日记(3)

Haskell的类型系统Haskell与弱类型语言不太一样,它拥有一个完善的类型系统,虽说完善,但是也非常简单,下面稍微就稍微列举一下: Int Integer Float Double Bool C...

Haskell趣学指南

  • 2015年11月03日 10:32
  • 3.15MB
  • 下载

A HASKELL 趣学指南

  • 2010年06月09日 10:03
  • 783KB
  • 下载

Haskell语言学习笔记(2)

let-in where pattern-matching list tuple if-then-else case-of
  • zwvista
  • zwvista
  • 2016年04月25日 14:49
  • 895

趣学Haskell

  • 2015年07月31日 13:30
  • 5.57MB
  • 下载

C++学习日记 2

  • 2014年01月10日 23:55
  • 2KB
  • 下载

MongoDB学习日记(一):安装指南

MongoDB windows 下的实战安装指南,使用的是3.0.6版本

appfuse2学习日记

  • 2008年10月09日 17:41
  • 258KB
  • 下载

linux 210学习日记(2)_准备工作

  • 2013年06月25日 09:16
  • 29KB
  • 下载

Haskell之Yesod开发–边踩坑边开发(2)

Yesod获取静态文件和带参数的Route渲染
  • daaoke
  • daaoke
  • 2015年06月26日 16:45
  • 546
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Haskell趣学指南学习日记(2)
举报原因:
原因补充:

(最多只允许输入30个字)