Haskellの最新版入れてみた

普段「すからーすからーヽ(*゚д゚)ノ」 ばかり言ってますが、仕事で使ってるからという理由もあって無駄に詳しくなっていますが、そもそもそれなりに関数型言語全般に興味があります。O'Reillyからでているこの本

Real World Haskell―実戦で学ぶ関数型言語プログラミング

Real World Haskell―実戦で学ぶ関数型言語プログラミング

も持っていて、それなりに読んだことはあるけど、実際Haskellでまともな大きめのプログラム書いたことはありません。本当はまともな知識があったら、ScalazとHaskell比べて色々書きたいんですがね・・・

で、以前違うパソコンにインストールした覚えはあったけど、今つかっているものにはGHCが入っていなかった*1ので、入れてみたっていうただの備忘録です。


Haskell自体はほとんど最新の情報とか追えてないですが、おそらく色々と進化している途中らしく、例えば以下のようなtweetを見て



ScalaのREPLは、packageの定義以外は基本的になんでもできるけど、以前ちょっと試したときの古いversion*2のものだと、色々ghci上だけだとできないことあって不便だったよなー。と思って、しかしそれらが改善されてるなら、最新入れてみよう(`・ω・´)ってことでやってみたメモ。

まず適当にググッて以下のページを発見。

http://www.sampou.org/cgi-bin/haskell.cgi?HowTo%3AGHC

なんか結構古いけど、ソースから入れてるし、今から入れようとしてるのが同じUbuntuだから似たような手順で入れれば動くんじゃね?っていう乱暴な予想を立てて、とりあえず探してみたら、それらしいものはあったので以下からdownload

http://www.haskell.org/ghc/dist/current/dist/

このblog書いてる時点では
ghc-7.3.20111021-x86_64-unknown-linux.tar.bz2
というのが最新っぽいので、

wget http://www.haskell.org/ghc/dist/current/dist/ghc-7.3.20111021-x86_64-unknown-linux.tar.bz2
bzip2 -dc ghc-7.3.20111021-x86_64-unknown-linux.tar.bz2 | tar xvf -
cd ghc-7.3.20111021/
./configure
sudo make install

とやった。おーこれでもうインストールできたのか?っと思って、"ghci"と打ってみたら、以下のような表示になって起動しない(´;ω;`)ブワッ

GHCi, version 7.3.20111021: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... <command line>: can't load .so/.DLL for: libgmp.so (libgmp.so: cannot open shared object file: No such file or directory)

ェ・・・(´・ω・`)ってなっててもしょうがないので、エラーメッセージでググると、それらしいものをStackOverflowで発見

http://stackoverflow.com/questions/6360724/installing-ghc-binaries-on-linux-cant-find-libgmp-so

とりあえず上記のコマンドの意味も完全にちゃんとわかってないまま、上記のURLに載っていたものをそのまま実行(ぉぃ

cd /usr/lib64
sudo ln -s libgmp.so.3 libgmp.so

そしてもう一度ghciと打ってみると・・・

GHCi, version 7.3.20111021: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude>

おー動いた( ´ー`)/

Prelude> 1 + 2
3

とかちゃんと計算できますね。えーその最新版のghci独自の機能が使えるかどうか試そうとしたけど、なんだか長くなってきたので、気が向いたとき別の機会に書きます・・・

追記:
これ書いたからなのか、twitterでつぶやいていたからなのか、早速反応もらいますた、twitter素晴らすぃですね。

よいこの皆さんは、ちゃんと調べてHaskell Platformとかも一緒に入れるようにしましょう(まだ自分やってない

*1:いくつかあるんだが、とりあえず今入れようとしているのは、64bitのubuntuの10.04

*2:そもそもそれがいくつだったのか覚えていない。6.* とかだったような