七月記錄:整個七月就在玩,參加夏令營,去遨遊。。。。 八月份須要開始複習,正等書的這個過程忽然想起一直沒有完成的學習-haskell,因此當前的目標是用haskell製做一個局域網通訊的小工具,要求:一,完成工具要求 二,完備的設計文檔 三,報告express
學習資料:http://fleurer-lee.com/lyah/chapters.htm haskell趣學指南 (後續還會有別的書,rwh等)函數
基本語法:工具
類型:學習
常見基本類型: Int:通常是32bit整數ui
Integer:無限大整數spa
Float:單浮點設計
Double:雙浮點code
Bool:布爾型htm
Char:字符型
blog
常見類型類:
Eq:可判斷性類型 例如Int等
Ord:可判斷大小型
Show:可用字符串表示的類型
Read:將一個字符串轉爲Read的類型 單用需類型註釋 如read 「5」 :: Int
Num:表示數字的類型類
Integral:一樣是表示數字的類型類。Num包含全部的數字:實數和整數。而Intgral僅包含整數,其中的成員類型有Int和Integer。
Floating:僅包含浮點類型:Float和Double。
List and Tuple:
List:多維鏈表 Tuple:元組
List:類型相同,不定長
Tuple:類型能夠不相同,可是單元數據數目必定
語法:
if-else語句 格式: if 表達式
then 表達式
else 表達式
if-else語句自己也是一個表達式,這裏體現出函數式語言的一個特色:一切皆數
模式匹配:模式匹配經過檢查數據的特定結構來檢查其是否匹配,並按模式從中取得數據。
注意:記得必定通配語句
where綁定:where綁定中定義的名字只對本函數可見,可用模式匹配,函數等
let in表達式: 格式:let [bindings] in [expressions]
let綁定自己是個表達式,而where綁定則是個語法結構
case :
格式:
case expression of pattern -> result
pattern -> result
pattern -> result
...
用途 1:if-else或者case等
lucky :: (Integral a) => a -> String lucky 7 = "Lucky Number seven!" lucky x ="Sorry,you're out of luck,pal!"
用途 2:遞歸
--quicksort quickSort :: (Ord a) => [a] -> [a] quickSort [] = [] quickSort [x] = [x] quickSort (x:xs) = (quickSort small) ++ [x] ++ (quickSort big) where small = [y | y<-xs,y<=x] big = [y | y<-xs,y>x]