hiroshi hatake
cosmo****@gmail*****
2014年 1月 14日 (火) 22:09:33 JST
畑ケです。初めまして。 "Groonga"への表記統一の作業をしているうちに Groongaのバインディングを作ってみたら面白そうだと思い立ちました。 そこで、HaskellからもGroongaを使ってみたいと思い、 HaskellでGroongaをライブラリとして使用出来るバインディングを作成しました! Haskell + GroongaでHaroongaです(安直) https://github.com/cosmo0920/haroonga Groonga 3.1.1のgroonga.hからc2hsc ( http://hackage.haskell.org/package/c2hsc )を用いて静的に解析を行い、 hsc2hs ( http://www.haskell.org/ghc/docs/latest/html/users_guide/hsc2hs.html ) を 用いてhsc2hs向けマクロを一斉に展開するという方針で作成しました。 (バインディングを作成した、と言うよりもバインディングを生成するルールを 記述した、と言う方が事実を反映しているかも知れません) 唯一目立った制限があるとしたらgrn_obj構造体へのHaskellからの内部アクセス 方法です。 GroongaのC APIの解説記事(と言っても少ないですが)を見る限り、「grn_obj 構造体は汎用ポインタ型でよしなにしてくれる」という事からアクセスの手段を バ インディングからは提供しない、としました。 groonga.hを用いて生成した後、すこし手直しをしているため、APIがこなれてい ませんが。。。 Groonga 3.1.1のgroonga.hに書かれているAPIはもれなく使えるようになってい ると思います! その他、現時点ではもう少しとっつきやすくする為のGroonga.SimpleAPIモ ジュールを提供しています。これはGroongaの GObject-Introspectionを用いた Qiitaの記事( http://qiita.com/groonga/items/71b145b37d77bd160bf2 )にある ようなアクセス方法に似せたAPIを提供します。 現時点ではまだ申し訳程度にTravis CIを用いてCIをしていたり、exampleが少な かったりしています。 C APIへの完全なバインディングと生成するドキュメントは`cabal build && cabal haddock [--executables --hyperlink-source --internal]`したあとで無 いと見ることができないので試す時は注意してください。