标签(空格分隔): 笔记 Haskell
Haskell第三课
1.[ [ Char ] ]==[String]类型,如[“Hello”]
2.定义算列表的和
mySum :: [Int] -> Int
mySum [] = 0 //这是递归基(递归基放前面)
mySum (x:xs)(括号是因为函数调用的优先级最高,根据:的作用可知x:xs可以看作x:[xs]即[x,xs]) = x + mySum xs //这叫递归
mySum [1] = mySum (1:[]) = 1 + mySum [] = 1 + 0
3.阶乘函数
factorial :: Integer -> Integer
factorial 0 = 1
factorial n = n * factorial (n-1)(或写成fac n | n > 0 = fac (n-1) * n添加n的范围)
4.快速排列
[1 .. 10] [1, 3 .. 100]会根据第一个元素和间距,打印出列表中所有的数,如:1 2 3 4 5 6 7 9 10
5.fracPlus (a, b) (c, d) = (div (a*d+b*c) gcd (a*d+b*c) (b*d) , div (b*d) gcd (a*d+b*c) (b*d) )
where
g = gcd (a*d+b*c) (b*d)(haskell的惰性,于是上式变为fracPlus (a, b) (c, d) = (div (a*d+b*c) g , div (b*d) g ))
6.集合
打印1~100所有偶数,[x | x <- [1 .. 100], mod x 2 == 0](mod是取余)
打印列表中所有小于10的数,[x | x <- [2, 3, 12, 2, 3, 123, 12], x <= 10]