2012年7月7日土曜日

Haskell事初め

研究にしてももプログラミング言語にしても,楽しそうなやつにいろいろ手を出してるから業績も製作物も何ともまとまりが無いことになっちゃってるが,
これはもう性分と諦めて Haskell をやってみようと思う.
(Windows+Cygwinの環境でやってます)

1. 処理系をインストール

GHCとHugsという処理系が有名らしい.Hugsってやつはメンテが滞っているらしいからGHCを使う事にする.GHC+お役立ちパッケージをインストールしてくれるHaskell Platformってのをインストールする.
インストーラはここ(http://hackage.haskell.org/platform/index.html)からダウンロードできる.
環境変数も追加してくれるので楽ちん.

2. haskell-modeのインストール

Emacs(Meadow)の設定は非常に重要.ここ(http://www.haskell.org/haskellwiki/Haskell_mode_for_Emacs)を辿って諸々のelispをダウンロードして展開.できたディレクトリをhaskell-modeって名前に変更して~/.emacs.dの中に突っ込む.
あとは,.emacs内で,

(add-to-list 'load-path "~/.emacs.d/haskell-mode")
(require 'haskell-mode)
(require 'haskell-cabal)
(add-to-list 'auto-mode-alist '("\\.hsquot; . haskell-mode))
(add-to-list 'auto-mode-alist '("\\.lhsquot; . literate-haskell-mode))
(add-to-list 'auto-mode-alist '("\\.cabal\\'" . haskell-cabal-mode))

とでもやっておけばとりあえずはOK.その他,いろいろな便利設定はここ(http://d.hatena.ne.jp/kitokitoki/20111217/p1)が詳しいっぽい.

3. Hello World

適当な場所にhello.hsというファイルを作り,中に

main = putStrLn "Hello World!"

という1行を加える.
あとはターミナルで,

$ ghc hello.hs
$ ./hello.exe

でOK.コンパイルせずに実行するためには,

$ ghc -e Main.main hello.hs
あるいは,
$ runghc hello.hs




(追記:hmatrixのインストール)

*結論は上手くいかないってことなので期待しないように.
ある程度仕事に使えそうじゃないと続かないものが更に続かなくなるので行列演算ライブラリの導入は必須.Haskellにはcabalというシステムがあって簡単にライブラリをインストールできる(現時点ではアンインストールが出来ないので手動でファイルを削除する必要があるらしい).
早速,

$ cabal update
$ cabal install hmatrix

とやってインストール使用とするものの,blas, lapack, gsl-0がないですよと怒られる.そこでCygwinのsetup.exeを実行し,それらに関する-develのパッケージをインストール.ライブラリとインクルードファイルの場所を指定して再度cabalを実行する.

$ cabal install hmatrix --extra-include-dirs="C:\cygwin\usr\include" --extra-lib-dirs="C:\cygwin\lib"

が,まだgsl-0が無いと言われる.gslらしきものは入れてるので困ってしまうが,しょーがないのでGSLを自分でコンパイルしてインストールしてみる事にする.コンパイルには,autoconf, automake, gcc, libtool, makeが必要なので,持ってない場合はCygwinのsetup.exeでインストール.GSLのソースファイルをここ(http://ftp.jaist.ac.jp/pub/GNU/gsl/)からダウンロードしてきて/usr/local/srcに置く.ダウンロードしたのは最新の1.15.

$ cd /usr/local/src
$ tar xzvf gsl-1.14.tar.gz
$ cd gsl-1.14
$ ./configure
$ make

ここでエラーがでてる.バージョン落としてもダメだし,いろいろ調べてみたがこりゃ難しそう.
Cygwin厄介…なんか萎えるわ….

0 件のコメント: