(2009.5.11 新規作成。)
HaskellにはCabalというパッケージシステムがあります。RubyでいうRubyGemsのようなものです。
Fedora 10 LinuxのGHCにはCabalシステムは含まれますが、コマンドとしてのcabal (cabal-installツール) は含まれないため、別途インストールします。
次のサイトのDownload のページから、cabal-install をダウンロードします。2009.4現在の最新版はバージョン0.6.2です。
展開して、一般ユーザで bootstrap.sh を実行するだけでOKです。~/.cabal/bin にcabalコマンドがインストールされます。
個別のパッケージは、
で探します。各パッケージのページにソースコードが置いてありますが、cabalコマンドが自動で取ってきてくれるので、自分でダウンロードする必要はありません。パッケージをインストールするときは、次のようにします。--dry-runを付けると何が行われるか表示されるだけで、実際にインストールはされません。
$ cabal install HDBC-postgresql --dry-run
内容を確認してから、--dry-runオプションなしで実行します。
HaskellからRDBMSを操作するライブラリには次のものがあります。
hsqlとHDBCは、直接SQLを書くもので、似ています。
見たところ、hsqlはplaceholder の書き方が分からなかったため、HDBCのほうがよさそうです。
データベースに接続し、テーブルを作って行を挿入するサンプルを書いてみます。コンパイルは次のようにします。
$ ghc -package HDBC-sqlite3 db.hs
SQL文に埋め込む値はそれぞれtoSqlを付けます。
Haskellではあるリストの要素は同じ型でなければなりませんが、埋め込む値はそれぞれ違う型ですし、SQLにはナル値があったりもします。
toSqlは次の型を持ち、SqlValue型に揃えます。
型を実行時にしか見ないスクリプト言語に比べるとちょっと面倒ではあります。
Haskellでは演算子を自由に定義できることを活かして、HaskellのコードをSQLにマップするライブラリです。
SQLを実行しなくても、Haskellのコンパイル時にSQLの誤りを検出できます。
TODO: サンプル、説明を追加。
Netsphere Laboratories http://www.nslabs.jp/
[PR]