天天看點

Haskell函數式程式設計之一-語言初體驗

如果你是使用面向對像語言進行程式設計的程式員,那麼你應該去了解掌握一門動态語言。而動态語言的魔力之一就是函數式程式設計。而要學習了解函數式程式設計,那麼haskell是一個不錯的選擇。

Haskell是是一門純函數式程式設計語言(purely functional programming language)。在其世界中函數是第一等對象。并且在haskell中沒有指派,例如你指派a的值為5,然後你無法再給a配置設定其它的值。是以你不能像指令式語言那樣指令電腦“要做什麼”,而是通過函數來描述出問題“是什麼”。

作為一個純的函數式程式設計語言,它支援惰性求值、模式比對、清單解析、類型類、類型多态……

别着急,讓我們慢慢來解開函數式程式設計的面紗。

在terminal下輸入<code>brew install haskell-platform</code>即可。

安裝完畢後haskell platform的解釋器GHC就已經在你的電腦上了。GHC可以解釋執行Haskell腳本,即字尾名為.hs的檔案。你可可以通過在terminal輸入<code>ghci</code>進入互動模式。

關于Haskell的編輯器你可以使用任何喜歡的編輯器:Vim、Emacs、Sublime、TextMate…..我比較喜歡Sublime。因為在Sublime自帶Haskell的快捷編譯執行。隻需要按Ctrl+B來直接運作Scripts腳本。

在ghci互動模式下可以使用<code>:l</code>指令來load一個Haskell腳本,然後就可以調用此腳本中的函數。我們先寫一個’Hello world!’程式,然後通過ghci來load和調用.

HelloWorld.hs

如果對檔案進行了修改,也可以直接通過<code>:r</code>來重新加載檔案。

注意對負數進行操作時要将其用()括起來,否則系統會報錯。

注意這裡的條件判斷中的else是不可以省略的,這樣保證條件語句總會傳回一個值。是以我們可以将整個<code>if..then..else</code> pattern看做一個表達式。

如果在腳本檔案中寫的話不需要使用<code>let</code>關鍵字。并且也可以采用另一個寫法。

isHello.hs

|表示或,otherwise關鍵字表示其它的情況。當然你也可以将這三行代碼寫成一行,這樣也是能夠正常運作的。分成三行隻是為了更加可讀。

還有第三種寫法,實際上與面對對象語言中的<code>switch…case</code>語句有些類似。

這和第二種寫法很類似。其實第二種寫法本質上就是<code>case</code>語句,它隻是<code>case</code>語句的一個文法糖而已。

另外,在Haskell中是沒有各種循環語句的,如果要實作相似的特性當然要使用遞歸了。

第二節中,我們會讨論這個問題。

繼續閱讀