入門Haskell―はじめて学ぶ関数型言語」が手に入った(と言ってももらったわけではなく自分で買ったのだが)のでのんびりHaskellの勉強。
Haskellの処理系でメジャーなのはGHCHugsがあるが、本の解説はGHCを前提にしているらしいので、GHCRPMからインストールした。
本の通りに次のようなHello worldプログラム(hello.hs)を書いた。

{- hello, world in Haskell -}
main = putStr "Hello, Haskell World!\n"

ところがこれをコンパイルしようとしたら、エラーが出る。なぜ?

$ ghc hello.hs -o hello
/usr/bin/ld: cannot find -lgmp
collect2: ld はステータス 1 で終了しました

(追記)[id:hanahi:20060411:p2] 解決しました。

しかたがないのでhugsで実行してみた。
スクリプトの先頭に #!/usr/bin/runhugs をつけて、ファイルに実行属性を与える。

#!/usr/bin/runhugs
{- hello, world in Haskell -}
main = putStr "Hello, Haskell World!\n"

で、実行できた。

$ ./hello.hs
Hello, Haskell World!


入門Haskell―はじめて学ぶ関数型言語

haskell-mode

VineLinuxのapt-getにはhaskell-modeが無かったので、自分でインストールしてみた。
参考 http://oss.timedia.co.jp/index.fcgi/kahua-web/show/Haskell/Emacs
まず、圧縮ファイルをダウンロードして、解凍し、emacs-lispのフォルダにコピー

$ tar xfvz haskell-mode.tar.gz
$ mv haskell-mode-2.1 /usr/share/emacs-21.3/site-lisp/haskell-mode

設定ファイル(.emacs.my.el)に設定を追加

(setq load-path (cons "haskell-mode" load-path))
(setq auto-mode-alist
            (append auto-mode-alist
                    '(("\\.[hg]s$"  . haskell-mode)
                      ("\\.hi$"     . haskell-mode)
                      ("\\.l[hg]s$" . literate-haskell-mode))))
(autoload 'haskell-mode "haskell-mode"
             "Major mode for editing Haskell scripts." t)
(autoload 'literate-haskell-mode "haskell-mode"
             "Major mode for editing literate Haskell scripts." t)
(add-hook 'haskell-mode-hook 'turn-on-haskell-decl-scan)
(add-hook 'haskell-mode-hook 'turn-on-haskell-doc-mode)
(add-hook 'haskell-mode-hook 'turn-on-haskell-indent)
(add-hook 'haskell-mode-hook 'turn-on-haskell-ghci)

(setq haskell-literate-default 'latex)
(setq haskell-doc-idle-delay 0)

GHCは使わないかもしれないので、参照URLで解説されている haskell-ghci.el の修正はしていない。