「入門Haskell―はじめて学ぶ関数型言語」が手に入った(と言ってももらったわけではなく自分で買ったのだが)のでのんびりHaskellの勉強。
Haskellの処理系でメジャーなのはGHCとHugsがあるが、本の解説はGHCを前提にしているらしいので、GHCをRPMからインストールした。
本の通りに次のような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-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)