Haskell環境の用意

処理系

(2008.11.8 この節を更新。)

Haskellでプログラムを作るには、コンパイラかインタプリタを用意します。次のようなものがあります。

2020年5月現在, 実質的には GHC一択です。実装が一つだけ、というのは、規格と実装が癒着しやすく、あまりよくない。

The Glasgow Haskell Compiler (GHC)
コンパイラ (インタプリタも付属) で、もっともメジャー。
LHC - No, not that Hadron Collider. The Haskell Compiler.
LLVMへのコンパイラ。 [2022-09] 2016 年で止まっている。

クライアントアプリケーションを作るときは GUIライブラリも必要です。こなれているのは次の二つだと思います。

gtk2hs
gtk+2のHaskell binding.
wxHaskell
wxWidgets のHaskell binding. WxHaskell - HaskellWiki. 2020年5月現在, 最新は 2017年4月の v0.92.3. wxWidgets v3.0 [現在の安定版] に対応。

ここではgtk2hsをインストールしてみます。

Windowsの場合

Windowsの場合は、先に MinGW 環境を整えます。MinGWのインストールは MinGWのインストール を参照してください。

次にGHCをインストールします。2008.11 現在、安定版の最新版はバージョン6.10.1です。

Windows用にバイナリ版が用意されているのでそれを利用します。インストーラをダウンロードしてきて実行します。

次はgtk2hsです。

gtk2hs は gtk2ライブラリを必要とします。先に Windowsネイティブなgtk2アプリケーションの開発 を参考に、インストールしておきます。

2008.11現在、Gtk2Hs の最新版はバージョン0.9.13です。

これもWindows用にバイナリ版が用意されています。インストーラをダウンロードして実行します。

Linuxの場合

(2020.5)

GHC のインストールの後、多くのライブラリ・パッケージのインストールについては, Haskell Tool Stack を使います。解説はこちら; Haskell Stack でライブラリを安定させる

cabal-install パッケージはもはや使わないため、"ghc" パッケージだけを入れるようにすればよい。

# yum install ghc

(2020.5 ここまで.)

(2013.3 加筆.)

Haskell環境の導入は, 個別にパッケージをインストールするのではなく, haskell-platform というパッケージ一つをインストールすればいいようになっています。 Stack のほうがよい。上述。

Fedora 17 Linux の haskell-platform には, 次のようなものや、そのほか様々なライブラリが含まれています;

alex 2.3 lexerジェネレータ
cabal-install 0.10 パッケージ管理
ghc 7.0 Haskellコンパイラ
happy 1.18 パーサジェネレータ

ライブラリには, OpenGLグラフィクスも含まれます。

Fedora 25 だと、次のバージョン;

alex 3.1
cabal-install 1.22
ghc 7.10
happy 1.19
# yum install haskell-platform

(2013.3 加筆ここまで。)

インタプリタ

GHCには、インタプリタGHCiが付属している。ghciコマンドで起動できる。

抜けるのは :quit, ヘルプは :?

$ 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> 1 + 2 * 3
7
Prelude> "abc" ++ "def"
"abcdef"
Prelude> [1] ++ [4]
[1,4]
Prelude> [1] ++ [2,3]
[1,2,3]
Prelude> :quit
Leaving GHCi.