您的位置:手机购彩平台 > 手机购彩平台-编程 > Ubuntu下Linux64位虚拟机

Ubuntu下Linux64位虚拟机

2019-10-03 05:34

python入门编程, 之后用c++学习数据结构,Haskell萌新。

参考教材:Learn You a Haskell for Great Good (

操作环境:Ubuntu下Linux64位虚拟机

逻辑值 Boolean value: True, False

逻辑运算符 Boolean operator: &&, ||, not

判断相等和不等 Equality and inequality: ==, /=

运算优先级priority () > 函数调用function call > 其它数学运算others

If...then...else

Haskell要求有 if 必须有else。

Haskell的list类似于c++里的数组, 必须是相同类型的元素(homogeneous),使用[ ] 包围。

列表属性:

length a 获取元素个数

null a 判断是否是空list。

元素添加:

a ++ b:遍历a后将b加在尾部。

a: b : 将a加在b的开头。

a `elem` b 判断a是不是b中的元素。

以上二者中后者在元素多时据说更高效。可能是类似链表的结构?

元素获取:

a !! b 利用下标获取。从0开始计算下标。python 和 c++里的[ ]

head a 获取第一个元素。

tail a 返回除去第一个元素后的list。

last a 获取最后一个元素。

init a 获取除去最后一个元素后的list。

take a b 从b中获取前a个元素组成的list,不足则返回整个list

drop a b 从b中获取去除前a个元素后余下的list, 不足则返回空list。

多个list

小list可以组成大list,但是同样要求不同list的元素类型相同。

list比较参考字符串比较规则。

其它操作:

reverse/sum/product/maximum/minimum a 倒置, 求积, 求和, 求最大元素, 求最小元素

replicate a b 将a重复b次构成list。

cycle a, repeat a 获取由a构成的list

Haskell中,range的表达类似于数学, 使用若干样例作为模板,使用..表示省略,元素个数可以有限也可以无限。默认模式类似求succ。

range在我的理解里与python中类似,也是一种iterator对象。考虑到这门语言lazy的性质,只有在需要的时候才会被呈现。这也是为什么上面的cycle, repeat可以使用(毕竟算法要求有限性)

另外,这里的range是前后都闭的。

Haskell中的list comprehension的用法与Python类似,但是表达上更接近数学中的集合表达。使用|分割元素和条件,使用,分割多个条件, 使用<- 表达属于。范围限制条件放在其他条件之前。

Tuple

tuple可以存放类型不同的元素。不同长度或者元素种类不同的tuple都被视为不同的类型,不能放在同一个list中。 tuple使用 包围。

对于二元组, 可以使用fst 和scd 获取第一个和第二个元素。

本文由手机购彩平台发布于手机购彩平台-编程,转载请注明出处:Ubuntu下Linux64位虚拟机

关键词: