一 表达式和基本类型
这个类似于命令式语言
二函数
函数是函数式编程的一等公民。
这部分最重要的是递归函数。
1基本递归
例如,求阶乘
代码:fact x=if x==0 then 1 else fact(x-1)*x
2 模式匹配(实现递归)
fact 0=1
fact x=x*fact(x-1)
3 哨兵表达式(为了改变模式匹配的顺序)
fact x
|x>1 =x*fact(x-1)
|otherwise =1
三 元组和列表
元组,例如(x,y,z)
列表 例如[int,int,int] [1..4] [10,9.5..4]
列表的操作有:head,tail,zip(合并) ,take (取前几项)
列表的生成:
1递归 h:t=[1,2,3]
2范围与组合 [1..4] [10,9.5..4] take 5[0,2..]
3列表推导 let crew=["kirk","pp","james"]
[(a,b)|a<-crew,b<-crew,a|=b]
主要参考网站为:维基教科书 http://zh.wikibooks.org/wiki/Haskell
haskell中文社区
本文内容总结来源于《七周七语言》。
附课后题答案:
--4
func2 []=[]
func2 [h]=[h]
func2 (h:t)=(func2 t)++[h]
--5
color=["blue","black","white","yellow","red"]
func5=[(a,b)|a<-color,b<-color,a<b]
--6
list6=[1..12]
func6=[(a,b,a*b)|a<-list6,b<-list6,a<b]
--7
--a,b..e represent 5 states
list7=["red","blue","green"]
dif7 a b =if a==b then 0 else 1
find7=[(a,b,c,d,e)|a<-list7,b<-list7,c<-list7,d<-list7,e<-list7,dif7 a b==1,dif7 b d==1,dif7 a d==1,dif7 a b==1,dif7 a c==1,dif7 a e==1,dif7 c e==1,dif7 c d==1]