Haskell 笔记 ②
① 如何写一个求阶层函数? fac 0 =1 fac n=n*fac(n-1) 函数自适应匹配参数,可以把特判情况写在前面,注意按 顺序匹配 的, n 这种万能情况写在最前面就完蛋了。同时你也注意到,函数只能 一行写完 ,不能智能识别作用域啊 !! ②灵活的使用你的函数参数 ! 看这个求三元组第三个值的函数,占位符 _ 的神奇使用。 third::(a,b,c)->c third (_,_,c)=c 更神奇的手艹 head 函数 , (x:_) 中占位符模拟出了列表的剩余部分 head’::[a]->a head’ (x:_) =x 若是固定长度的列表,可以这么写 head ’ (x:y:[] ) =x 或者 head [x,y]=x ③ As 模式(填坑中,看不懂) ④利用哨位( Guard) 写出一个优美的递归程序 , | 后面的那个布尔式叫哨位 fac n | n==1 = 1 | n==2 = 2 |otherwise =n*fac(n-1) 尽管函数式语言不允许全局变量存在(全局就变成函数了,函数是确定,不可修改的)但是一个函数的尾部可以用 where 开设一个只赋值一次且作用域只是本函数的变量区,方便值一次计算多次,重复使用,用完销毁,变量区的变量必须对齐了,不然编译错。 fac n | n==1 = x | n==2 = y |otherwise =n*fac(n-1