Personal tools

Tw/Haskell入門的5個步驟

From HaskellWiki

Jump to: navigation, search

Haskell 是一個純粹的函式程式语言。本頁將幫助你快速的入門

Contents


1 安裝 Haskell

跟多數語言一樣, Haskell有兩種執行方法: 批次處理("編譯器")跟交互式("直譯器")。直譯式系統可以給你一行命令列(Command line), 讓你直接的進行實驗或評估。


GHC 編譯器和直譯器(GHCi) 最多人用, 也是最有未來性的系統
Hugs 編譯器 移植性佳, 而且比GHC小的多.

GHC跟Hugs都可以在 Windows 上作業,Hugs有最佳的平台整合。除此之外, GHC是最多實際用來開發與維護的. 這兩套軟體無異是適合新手或老手的選擇。在 Mac OS X 上安装 Haskell

2 開始使用Haskell

開啟一個終端機. 如果你已經安裝了GHC, 直接在命令列上輸入 ghci (GHC的直譯器的名子)。如果你安裝的是Hugs, 輸入 hugs

    $ ghci
       ___         ___ _
      / _ \ /\  /\/ __(_)
     / /_\// /_/ / /  | |      GHC Interactive, version 6.4, for Haskell 98.
    / /_\\/ __  / /___| |      http://www.haskell.org/ghc/
    \____/\/ /_/\____/|_|      Type :? for help.

    Loading package base-1.0 ... 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, Windows則為hello.exe )

    $ ./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,你將需要從檔案中載入定義的facfac.hs

fac n = if n == 0 then 1 else n * fac (n-1)

然後用Hugs執行他,如下:(在GHCi也能這樣做)

Hugs.Base> :load fac.hs
Main> fac 42
1405006117752879898543142606244511569936384000000000

我們也可以編譯這個程式,產生一個獨立的執行檔. 在fac.hs裡可以這樣寫。 (這裡換了一個比較優雅的寫法, 只是為了好玩.)

fac 0 = 1
fac n = n * fac (n-1)
 
main = print (fac 42)

現在可以編譯並執行它:

    $ ghc -o fac fac.hs
    $ ./fac
    1405006117752879898543142606244511569936384000000000

幹的好!

5 接著該往哪走

有很多很好的Haskell教學資料跟書本。這裡有一些我們推薦的:

教學


完整的列表, 參考跟教學:

加入社群!

跟別的Haskell社群成員交流:

語言: English