码迷,mamicode.com
首页 > 其他好文 > 详细

Haskell 笔记 ①

时间:2015-02-04 23:10:54      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:

一切都是函数,包括常量、表达式,格式:名字 参数参数2.. =函数内容

if语句(else绝对不可以省略)

F=if (..) then x

  else y

没有数组,只有列表[1,2,3,4,5], [‘h’,’e’]

  列表有好多运算符:

  “++” :同类型拼接

  “ : “ :前端插入,1:2:3:4:5:[]等效于[1,2,3,4,5],没有后端插入!

  “!!”: 下标索引,从0开始,[1,2,3]!!1=2

  列表是可以嵌套的[[1,2],[3,4]]

  列表是可以比较的[1,2,3]<[1,3]

  列表有一些常用函数,注意这些混乱的名字

  head []:返回首元素

  last []: 返回尾元素

  tail []:返回去除头元素后的列表

  init []:返回去除尾元素后的列表

  null []:检测是否空

  reverse []:反转

  take/drop 5 []:/扔列表前5个元素

  maximum/minimum []: 最值

  sum/product []:和与积

  elem 4 [1,4]: 是否存在,通常中缀形式,即 4 `elem` [1,4]

列表可以自由推导,最好不要去推导浮点数(精度问题)

  [1..20]就是1~20了,[‘a’..’z’]就是a~z

  只要告诉步长就可以自由推导,如[1,4..11]=[1,4,7,11]

  注意20~1应该这么写[20,19..1],因为默认的等差推导认为d>0

  列表是惰性的。

  [1,4..]尽管是无限的,但却是合法的,你可以take 5 [1,4..]取出前5项,要多少算多少,Lazy

  相关惰性函数(注意格式!!)

  take 5 (cycle [1,2,3]) //生成123循环列表

  take 5 (repeat 5) //生成5循环列表

万能的列表表达式

  还记得高中学集合时,描述型表示集合么 {x|x<10,x-(N}

  看这个例子[x|x `mod` 3==1,odd x],这个就是给定一堆条件创造的列表,所有条件逗号隔开,且都是逻辑与关系,返回的不仅可以是x, x*y也行,(x,x)也行

 列表表达式可以是函数(Orz

 看这个函数fuck xs=[x|x `mod` 3==1,odd x],调用时fuck [1..10]

列表表达式可以嵌套

[ [x|x<-xs]|xs<-xxs] ,当然xxs就得是嵌套列表

细胞数组?元组!

(1,”hello”,”a”) ,用C语言来解释原理,就是建了个结构体。

列表套元组,元组的形式(个数&类型)必须一致,因为列表中的类型必须一致,一个元组就是一个结构体,一种限定的类型

二元组别称序对,有三个函数fst/snd,取第一/第二元素,zip [1..20] [20..30]zip就是拉链的意思,自动从两个列表中生成[所有序对],长度由最短那个控制

Haskell 笔记 ①

标签:

原文地址:http://www.cnblogs.com/neopenx/p/4273486.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!