3天学习haskellhaskell第一天

一 表达式和基本类型

这个类似于命令式语言

二函数

函数是函数式编程的一等公民。

这部分最重要的是递归函数。

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]

原文地址:https://www.cnblogs.com/catkins/p/5270686.html