GHC7.8.2をMac OS X 10.9 Marvericksにインストール

新機能もりもりのGHC7.8.1が遂に4/9に出ました。
https://www.haskell.org/ghc/docs/7.8.1/html/users_guide/release-7-8-1.html
リリースノート見てなんでこんなに詰め込んだんだ1年も待たせずにもっと刻めばよいのにというかんじですが、
とか思ってたら、3日もせずに4/12に7.8.2が出ました。
https://www.haskell.org/ghc/docs/7.8.2/html/users_guide/release-7-8-2.html

なんか型シノニムの致命的なバグがあったようです。
#8978 (Type synonyms in class associated types behave strangely) – GHC

というわけで、7.8系をお試しするなら現時点で最新の7.8.2を入れるのがよいかと。

Mac用のバイナリのダウンロードリンクは以下
GHC 7.8.2 download — The Glasgow Haskell Compiler

  • Xcodeのアップデート

GHC7.8系はダウンロードリンクのところにXcode5.1が必要との記載があり。

This is a bindist for Mac OS X 10.9 (Mavericks). The package was built with and requires Xcode 5.1 (in particular, the "Unix Development Support") to be already installed. You can find Xcode at http://developer.apple.com/.

確認したところ、実機は5.0系だったので、AppStoreからXcodeを5.1系にアップデートしておく。重いので結構時間がかかる。

  • GHCのバイナリのダウンロード

適当なディレクトリにバイナリをダウンロードして展開

$ mkdir -p /usr/local/src/haskell/ghc
$ cd /usr/local/src/haskell/ghc
$ curl -O https://www.haskell.org/ghc/dist/7.8.2/ghc-7.8.2-x86_64-apple-darwin-mavericks.tar.bz2
$ tar jxf ghc-7.8.2-x86_64-apple-darwin-mavericks.tar.bz2
$ cd ghc-7.8.2
  • GHCのインストール

既にインストール済みのHaskell Platform(GHC7.6.3)があって干渉するのでインストールパスを個別に指定してインストールする。

$ mkdir -p /usr/local/haskell/ghc/ghc-7.8.2
$ ./configure --prefix=/usr/local/haskell/ghc/ghc-7.8.2
$ make install
  • PATHの設定
$ vi ~/.bashrc

~/.bashrcでPATHを通すのだけど、ここで既にインストール済みのHaskell Platformがあるのでそちらをコメントアウトして、/usr/binの下からシンボリックが色々貼られてしまってるので、先ほどインストールしたパスが一番先頭になるように調整する。

export PATH=/usr/local/haskell/ghc/ghc-7.8.2/bin:$PATH
#export PATH=$PATH:~/Library/Haskell/bin

環境変数を読みなおす

$ . ~/.bashrc

正しくパスが通ってるか確認する。

$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 7.8.2

うん。バージョンが7.8.2になってる。

  • cabal-installのバージョンアップ

GHC7.8系はcabal-installの1.18系が必須とのことで、こちらもバージョンアップしておく必要あり。Mac用のコンパイル済みのバイナリがあるのでこれをダウンロードして適当なパスに配置する。

$ mkdir -p /usr/local/src/haskell/cabal-install
$ curl -O http://www.haskell.org/cabal/release/cabal-install-1.18.0.3/cabal-x86_64-apple-darwin-mavericks.tar.gz
$ tar zxf cabal-x86_64-apple-darwin-mavericks.tar.gz
$ mkdir -p /usr/local/haskell/cabal/cabal-1.18.0.3/bin
$ mv cabal /usr/local/haskell/cabal/cabal-1.18.0.3/bin/

パスを通す。ここでもHaskell Platformと干渉しないように/usr/binより前に来るように注意。

export PATH=/usr/local/haskell/ghc/ghc-7.8.2/bin:/usr/local/haskell/cabal/cabal-1.18.0.3/bin:$PATH

パスの読み直し。

$ . ~/.bashrc

パスが通ったか確認。

$ cabal --version
cabal-install version 1.18.0.3
using version 1.18.1.3 of the Cabal library 

cabalのバージョンアップ完了。

インストールしたらお約束のHello World
以下をhello.hsとして作成。

main = putStrLn "Hello World!"

コンパイルして実行

$ ghc hello.hs 
[1 of 1] Compiling Main             ( hello.hs, hello.o )
Linking hello ...

$ ./hello 
Hello World!

ちゃんと動いた。