在COMP30026 Models of Computation中接觸了新的編程語言Haskell,一個以前聽都沒有聽過的語言,在此記錄關於Haskell的一些最基本概念。express
1.Haskell是一個函數式編程語言(functional programming language),函數式編程語言最基本的操做是function application。編程
2.GHC(the Glasgow Haskell Compiler)是Haskell的編譯器,GHCi是Haskell的互動編程環境。服務器
3.官網www.haskell.org,相關下載、文檔、教程都在其中。併發
4.Haskell語言的特色(摘自官網):app
(1) 靜態類型statically typed編程語言
在Haskell中全部的表達式(expression)的類型(type)在編譯時肯定,在function application中的類型必須匹配,不匹配會被編譯器拒絕。類型在Haskell中不只是一種保證形式,也是Haskell對程序構建的表示。ide
(2) 純函數purely functional函數式編程
在Haskell中的每個函數(function)都是數學意義上的函數,即便是反作用(side-effect)的IO操做也只是對純代碼產生的操做的描述。沒有語句和指令,只有不能改變(局部或全局)變量和訪問如時間和隨機數狀態的表達式,也就是無狀態。函數
(3) 類型推斷type inference
沒必要在Haskell中明確寫出每一個類型。類型將經過雙向統一每個類型來推斷出。但若是選擇寫出類型或是要求編譯器寫出。
(4) 併發concurrent
Haskell對效果的明確處理,很是適合併發編程。它的編譯器GHC帶有高性能並行垃圾收集器和輕量級併發庫,其中包含許多有用的併發原語和抽象。
(5) 惰性lazy
函數不檢測其參數,這意味程序能夠很好地經過普通函數和控制結構(如if/else)來組合在一塊兒。Haskell代碼的純粹使得功能鏈更容易融合在一塊兒,從而取得性能優點。
(6) 包packages
Haskell的開源貢獻很是活躍,公共包服務器上提供了範圍很是廣的包。