Haskell 除了編譯,也提供 REPL 與 Script

Haskell 提供各種執行方式,除了可編譯之外,還提供 REPL、Script,也可直接在 IDE 內執行,非常方便。

Version


macOS High Sierra 10.14
GHC 8.4.3
Haskell for Mac 1.6.0

安裝 GHC


1
$ brew install ghc

使用 Homebew 安裝 GHC。

執行 GHCi


預設 prompt 為 Prelude>,可自行修改成 GHCi>

.ghci

1
:set prompt "GHCi> "

ghc000

  • 在 home directory 建立 .ghci,設定 prompt 為 GHCi
1
$ ghci

ghc001

  1. 輸入 ghci
  2. Prompt 為 GHCi
1
ghci> :q

ghc002

  1. 輸入 :q 離開 GHCi。

編譯執行 Haskell


GHC 可將 Haskell 編譯成執行檔執行。

HelloWorld.hs

1
2
main = 
print "Hello World"

以 Haskell 印出簡單的 Hello World

main 為 Haskell 執行檔第一個執行的 function

1
$ ghc HelloWorld.hs

使用 ghc 編譯 HelloWorld.hs

ghc003

ghc004

  1. 編譯出 HelloWorld 執行檔,也一併編譯出 .hi.o 等中間檔
1
$ ./HelloWorld

ghc005

  1. 直接執行 hello-world 執行檔。

以 GHCi 執行 Haskell


Haskell 亦可以使用 REPL 方式執行。

ghc010

  1. 輸入 ghci 進去 GHCi
  2. 輸入 :l + 檔名 載入檔案
  3. 在 GHCi 執行 function

以 runghc 執行 Script


Haskell 也可以不用編譯,直接以 script 形式執行。

ghc011

  1. runghc + 檔案名稱 即可立即執行

直接執行 Script


也可如同 Bash 一樣,直接執行 script。

HelloWorld.hs

1
2
3
4
#!/usr/bin/env runghc

main =
print "Hello World!"

在第一行加上 #!/usr/bin/env runghc

1
$ chmod +x HelloWorld.hs

使用 chmod 設定 HelloWorld.hs 能被執行。

1
$ ./HelloWorld.hs

直接執行 HelloWorld.hs

ghc008

Haskell for Mac


ghc006

  1. 建立 HelloWorld.hs
  2. 在左側建立 main function
  3. 在右側 Run Playground 執行 function,相當於 GHCi
  4. 下方顯示結果

Conclusion


  • Haskell 除了可編譯外,尚提供 REPL 與 Script 模式,無論你習慣編譯式語言或者 Script,都可以找到自己習慣的方式
  • Haskell 也可以類似 Bash 方式直接執行
  • 若使用 Haskell for Mac 這類 IDE,也類似 GHCi,可以每個 function 單獨測試
2018-10-17