系列文章bash
:l myfunctions
能夠加載同目錄的 myfunctions.hs,且能夠重複執行:set prompt "ghci> "
能夠改 prompt
:set prompt "λ "
能夠獲得 λ5 * -3
要寫成 5 * (-3)
,否則報錯1 + '1'
會報錯,5 + 0.4
不報錯,由於 5 也能夠被看做 5.0succ 8
是取後繼min 1 2
是取最小max 1 2
是取最大div 9 3
是除法succ 9 * 10
等價與 (succ 9) * 10
div 9 3
能夠改爲 9 `div` 3
doubleMe x = x + x
doubleUs x y = x * 2 + y * 2
if <condition> then <exp> else <exp>
不能省略 else'
字符,通常以 '
結尾的函數是非惰性求值版本,也叫嚴格求值a = 1
a = [1,2,3]
++
能夠拼接兩個列表,可是它會遍歷第一個列表"hello"
是 ['h','e','l','l','o']
的語法糖:
能夠在列表頭部插入一個元素 1:[2,3]
[1,2]
是 1:2:[]
的語法糖!!
符號:[1,2,3] !! 0
值爲 1,索引越界會報錯[3, 2, 1] > [2, 1, 0]
值爲 Truehead/tail/last/init/length/null/reverse/task 3/drop 3/maximum/minimum/sum/product求積
head []
報錯4 `elem` [3,4,5]
值爲 True[1..20]
生成 1 到 20 這 20 個數字組成的列表['a'..'z']
/ ['K'..'Z']
[2,4..20]
生成 [2, 4, 6, 8, 10, 12, 14, 16, 18, 20][20..1]
會獲得空列表,應該寫成 [20,19..1]
take 24 [13, 26..]
cycle [1, 2, 3]
會對列表進行無限循環,獲得 1,2,3,1,2,3,1,2,3... 組成的列表repeat 5
會獲得由 5 組成的無限列表repeat 3 10
會獲得 [10,10,10][x* 2 | x <- [1.. 10]]
獲得 [2, 4, 6, 8, 10, 12, 14, 16, 18, 20][x* 2 | x <- [1.. 10], x>5, filter2, filter3]
能夠對 x 進行過濾[ x* y | x <-[1, 3, 5], y <- [2, 4, 6]]
獲得長度爲 9 的列表 [2,4,6,6,12,18,10,20,30][ x* y | x <-[1, 3, 5], y <- [2, 4, 6], x* y > 10]
獲得 [12,18,20,30]length' xs = sum [1 | _ <- xs]
能夠使用這個 length' 函數求列表的長度ghci> xxs = [[1, 3, 5, 2, 3, 1, 2, 4, 5],[ 1, 2, 3, 4, 5, 6, 7, 8, 9],[ 1, 2, 4, 2, 1, 6, 3, 1, 3, 2, 3, 6]]
ghci> [ [ x | x <- xs, even x ] | xs <- xxs]
[[2, 2, 4],[ 2, 4, 6, 8],[ 2, 4, 2, 6, 2, 6]]
複製代碼
(1,3)
是 tuple,(1,'a', "hello")
也是 tuple[(1,2), (3,4,5)]
會報錯,由於列表只能包含相同類型的東西