Travel With Haskell 2 — 运算与List初步

阅读: 评论:0

Travel With Haskell 2 — 运算与List初步

Travel With Haskell 2 — 运算与List初步

Travel With Haskell 2 — 运算与List初步

  • Travel With Haskell 2 — 运算与List初步
  • 运算
    • 运算符
    • 简单的内置函数
    • Haskell的if语句格式
  • List
    • List的合并
    • List的索引
    • List的函数
    • Range方法

运算

运算符

运算符大同小异,下面是几点需要注意的。

乘方符号为 ∗∗ ∗ ∗
不等号为 /= / =
在求复杂算式的时候,要注意加括号,尤其是数字包括负数的时候

简单的内置函数

函数名参数备注
succNum / Char求解其后继
maxNum求解最大值
minNum求解最小值

函数调用有最高的优先级,如下面两句话是等效的

> succ 9 + max 1 2 + 100
112
> (succ 9) + (max 1 2) + 100
112

所以在搞不清楚运算优先级的情况下, 多加括号会大大减低犯错误的可能性。

Haskell的if语句格式

if语句中的else部分是强制的。具体规则如下。

doubleMe x = if x > 50then xelse x + 50

上述函数的意思为,计算分段函数。

在Haskell中,首字母大写的函数是不允许的。原因在稍后的章节会介绍。

List

List的合并

List中只能装相同类型的元素

在ghci中,可以使用let关键字来定义一个常量,但是常量的首字母依旧不可以大写。否则会报错。

let numberList = [1,2,3,4,5]
[5] ++ numberList
5:numberList

可以使用 ++运算符来连接两个List。在使用++运算符的时候,haskell会遍历整个++左侧的序列。因此在对于特别长的字符进行处理的时候,最好的方法是使用:连接运算符,在前面插入。

但是使用:只可以插入单个数字或者字符,[5] : numberList 是不合法的。

List的索引

若要是想要获得下标,使用!!运算符。下标从0开始。

numberList !! 2

List的函数

函数名返回值备注
head返回List的头部首个元素
tail返回List的尾部去掉头部的部分
last返回List最后一个元素
init返回List除去最后一个元素的部分
length返回List的长度
null判断List是否为空
reverse将List反转
take返回一个List的前几个元素若超出长度,则返回整个List
drop返回除去前几个元素后的List若除去元素个数超过长度,返回空List
maximum返回List中最大的元素
sum返回List中所有元素的和
elem判断元素是否办包含在List中通常以中缀函数形式调用它。即 x `mod` y

Range方法

haskell中的range类似于python中的range,可以指定sta,end,step,基本语法为[sta , sta + step .. end ],下面为示例。

> [20,19 .. 1]
[20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1]
> [20,18 .. 1]
[20,18,16,14,12,10,8,6,4,2]
> ['a', 'c' .. 'z']
"acegikmoqsuwy"
> [1.. 18]
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]
> [0.1, 0.2 .. 1]
[0.1,0.2,0.30000000000000004,0.4000000000000001,0.5000000000000001,0.6000000000000001,0.7000000000000001,0.8,0.9,1.0]

注意如果是要逆序生成的,sta + step 不可省略,如果是浮点数,由于精度问题,可能会出现糟糕的结果。

但是如果想从无限循环的列表中取出前几个,就要用到cycle函数和repeat函数,通过实例来看他们之间有什么不同。

> take 6 (cycle [1,2,3])
[1,2,3,1,2,3]
> take 6 (repeat [1,2,3])
[[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3],[1,2,3]]

cycle相当于对List的每个元素逐次循环,而repeat是把参数当做一个整体进行循环。

本文发布于:2024-01-30 15:26:41,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170659960320979.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:Travel   Haskell   List
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23