List其實用白話的說法就是清單,就像是老闆可能交待你什麼工作,你得把工作寫下來變成一張厚厚的清單XD
工作也可能會分第一項底下有哪幾個小項目,所以又可以再把工作細分,細分之後它仍然是個清單只是把工作切的更細而已!
let a =[1,2,3,4,5,6,7,8,9,10],這行是設定一個全域變數。輸入a則會輸出List數值
ㄖ
那如果想把List跟另一個List結合起來必須使用到 ++ 函數。這個函數能讓兩個不一樣的字串合併,將剛設定變數加上[11,12,13,14,15,16,17,18,19,20],則會輸出如下圖的數值
但是呢全域變數使用++後,並不會變成新的List,要特別注意
接著我們將字元加入字串的最前頭,加入時必須在中間使用:函數
剛剛不是有設定好一個List了嗎?測試看看可不可以透過:函數將5加入該List前頭?結果是可以的
用!!來取得List的某個值,該函數後面必須接想取得得範圍,才能正確的取得到值喔,不然可能會出現一些錯誤,對了初值是0而不是1喔
再來建立一個細部的List b
再來建立一個細部的List c
來複習一下++的操作吧!!將a++b看會產生怎樣的結果?結果就是會發生錯誤,因為一個是普通的List,另一個是細部List,所以當然不能將兩者合併在一起
那使用:函數試試看可不可以將a插入到b的前頭呢?結論是可以的
來複習一下!!函數吧,取得b的第2個值,則會取得到List的第二個值
接著在介紹一個函數>,這個函數是用來比較大小的,也可以用來比較List的大小,跟平常語言的比較方式是相同的,不過List是比數量多寡
將剛剛所使用過得的!!以及++函數建立成新的List d,結果又變成一個新的List
再來建立一個List e,由兩個條件產生出來的List
再來建立一個List f,不過沒有用中括號來包住兩個條件輸出的值,試試看會不會有錯?其實是會得,因為當前面的條件執行完,則會將值在給f了,那後面條件沒辦法在寫入f,所以會產生錯誤
再來測試新函數head,head這函數是取得到前頭的值,有點類似!! 0這條件
tail函數則是將List的第一個值刪除
再來對細部List來使用tail的話,會將最前面的List刪除
last函數則是取得最後的值
init函數則是將後面的值去除掉,就是tail的反向函數
List裡面如果只有一個值,使用init則會變成一個NULL的List
length函數則是用來取得該List的長度
reverse函數則是將List反過來,如果是細部List則裡面的List值不會變,而是各個List會交換位置
take函數則是取得List 0到n的值,如果List只有5個值,輸入 take 10也是只會得到那5個值,而不會產生錯誤。
drop函數則是拋棄0到n的值
那如果List只有5個值,則使用drop 15,也如同take函數一樣,到達臨界值就不會再去做拋棄的動作了
maximum函數則是會取得List最大的值,如果是細部List則會取得最後的List
sum函數則是可以將全部加總起來
`elem`這個特殊的函數可以去判斷值是否有在List
參考文章:
http://learnyouahaskell-zh-tw.csie.org/zh-tw/ready-begin.html#