最近在看象棋的對戰系統, 所以就稍微看了一下functional programming.
然後找到haskell, 查了一下才發現原來就是tim之前介紹過的. 真是有趣的東西.
我練習程式時會有順手翻譯入門文件的習慣… 所以下面是翻的.
翻一翻也順便送一份到Haskell的wiki上.
—-
Haskell入門的5個步驟
Haskell 是一個純粹的函式編程语言。本頁將幫助你快速的入門。
1. 安裝Haskell
跟多數語言一樣, Haskell有兩種執行方法: 編譯跟直譯.
直譯式系統可以給你一行命令列(Command line), 讓你直接的進行實驗或評估.
GHC Compiler and interpreter (GHCi)
最多人用, 也是最有未來性的系統
Hugs Interpreter only
移植性嘉, 而且比GHC小的多.
GHC跟Hugs都可以在{ 某大廠作業系統 }上作業, Hugs有最佳的平台整合.
除此之外, GHC是最多實際用來開發與維護的. 這兩套軟體無異是適合
新手或老手的選擇.
2. 開始使用Haskell
開啟一個終端機. 如果你已經安裝了GHC, 直接在命令列上輸入ghci
(GHC直譯器的名子)
如果你安裝的是Hugs, 輸入 hugs
kevin@lls:~$ ghci
GHCi, version 6.8.2: http://www.haskell.org/ghc/
for help
Loading package base … linking … done.
Prelude>
當你出現提示符號, 那表示Haskell系統已經在準備你的輸入了.
3. 撰寫你的第一個Haskell程式
如果你已經學過其他程式了. 你的第一個程式大概是”Hello, world!”.
讓我們也這樣搞吧.
Prelude> “Hello, World!”
“Hello, World!”
Haskell系統評估為一個字串(string), 接著列出(printed)結果.
或著我們可以用另一種方法將它直接列印到標準輸出上.
Prelude> putStrLn “Hello World”
Hello World
使用Haskell的編譯器, 像GHC. 你可以編譯程式碼讓程式獨立執行.
建立一個hello.hs, 內容為:
main = putStrLn “Hello, World!”
然後用下列命令編譯他:
$ ghc -o hello hello.hs
接著你就得到一個可執行的執行檔了.
( Unix系統為./hello, hello.exe 則為{ 某大廠作業系統 } )
kevin@lls:~/Haskell$ ./hello
Hello, World!
4 Haskell的計算
來搞些有趣的吧. 在Haskell, 你的第一個真正的程式是乘階的function.
所以現在讓我們回到直譯器, 接著輸入:
Prelude> let fac n = if n == 0 then 1 else n * fac (n-1)
這一行定義了一個新的function, 名子叫fac. 將接收一個整數以供乘階運算.
我們可以輸入參數執行fac:
Prelude> fac 42
1405006117752879898543142606244511569936384000000000
需要注意的是如果你使用的是Hugs, 你將需要從檔案中載入定義的fac, fac.hs.
內容為:
fac n = if n == 0 then 1 else n * fac (n-1)
然後用Hugs執行他, 如下(在GHCi也能這樣做)
Hugs:
Hugs.Base> :load fac.hs
Main> fac 42
1405006117752879898543142606244511569936384000000000
GHCi:
Prelude> :load fac.hs
[1 of 1] Compiling Main ( fac.hs, interpreted )
Ok, modules loaded: Main.
*Main> fac 42
1405006117752879898543142606244511569936384000000000
我們也可以編譯這個程式, 產生一個獨立的執行檔. 在fac.hs裡可以這樣寫.
(這裡換了一個比較優雅的寫法, 只是為了好玩.)
fac 0 = 1
fac n = n * fac (n-1)
main = print (fac 42)
現在可以編譯並執行它
kevin@lls:~/Haskell$ ghc -o fac fac.hs
kevin@lls:~/Haskell$ ./fac
1405006117752879898543142606244511569936384000000000
幹的好!
5. 接著該往哪走
有很多很好的Haskell教學資料跟書本. 這裡有一些我們推薦的.
教學:
Haskell in 10 minutes
Yet Another Haskell Tutorial (English)
A Gentle Introduction to Haskell (English, French PDF)
完整的列表, 參考跟教學:
Books and tutorials
加入社群:
跟別的Haskell社群連絡:
Haskell-Cafe mailing list
IRC channel