列表推导式
在Haskell中,列表推倒式绝对是我见过最厉害的推倒了(什么鬼),哦不是,是最厉害的一个特性了。还记得我在小学一年级的时候,在公堂之上。。。不对,是高中的时候,接触到了列表推倒式。它的语法十分简洁,而且强大。那么废话不多说,先来看第一个例子:
一目了然,如果我们要接多个谓词的话,在后面使用逗号进行连接:
除此之外,还可以添加多个变量:
在这里,我们也可以很清除地知道列表推倒式遍历的顺序。
列表推倒式同样可以用于列表:
元组
元组虽然很像列表,但和列表有着本质的不同。列表是单一类型的,也就是说,里面的元素类型是相同的,但元组是不同的。
比如我们使用元组,可以定义如下变量:
(3,'as',98,'hi')
元组的类型是按照元素数量来划分的,比如下列两个元组的类型是不同的:
meta1 = (1,32,'s')
meta2 = (1,32)
也就是说,当你写下如下代码时编译器会报错:
列表中的元素的类型必须相同
序对
当一个元组的元素数量为两个时,它就被成为序对。
这里有三个函数比较重要:
他们分别被用来返回键,返回值,使用列表来创建序列。
找直角三角形
我们综合运用元组和列表推倒式来查找在一定范围内的所有直角三角形:
- 三边长均为整数
- 三边长度均小于等于10
- 周长为24的直角三角形
使用列表推导式实在是一件太过轻松的事情了: