BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース HaskellとHubrisを使ってRubyに力を与える

HaskellとHubrisを使ってRubyに力を与える

原文(投稿日:2009/08/26)へのリンク

RubyやRailsアプリケーションにCを組み込むのは、パフォーマンスのボトルネックを解消するひとつの方法だ。RubyInlineはCの組み込みを簡単にしてくれる。Rubyコミュニティはまた、Erlang、Caml、Haskellといった関数プログラミングのコミュニティとも強く結びついている。ErlangにはErlectricityを使ったブリッジが、Objective Camlにはrocamlを使ったブリッジがすでに存在している。ApacheのThriftを使うことで、RPCとシリアライゼーションフォーマットを介してRubyを他の言語とコミュニケーション可能にするという方法もある。

Mark Wotton氏HubrisというRubyからHaskellコードの呼び出しを可能にするブリッジを書いた。あなたはghcをインストールしておく必要がある。ghcはjhc (John's Haskell Compiler)をコンパイルできるHaskellプラットフォームを提供する。jhcはLinuxもしくはMacでしか動かないことに注意しなければならない。

準備ができたら、まずHaskellファイルを書いて、関数を定義したところにccallのエクスポートを追加する。例えば、Test.hsのようになる。

fibonacci :: Int -> Int
fibonacci n = fibs !! n
  where fibs = 0 : 1 : zipWith (+) fibs (tail fibs)

次に、jhc_builder.sh Test.hsを実行して、動的ライブラリ(libdynhs.so)を作る。
この後、動的ライブラリをRuby/DLでロードすると、エクスポートされた関数がRubyコードで利用可能になる。

require 'dl/import'
 
module HaskyPants
  extend DL::Importable
  dlload "./libdynhs.so"
  extern "int fibonacci_hs(int)"
end
 
puts HaskyPants.fibonacci_hs(12)

Mark氏は、次回(9月)のrorosydで、Hubrisについて説明する予定だ。まだ初期段階ではあるが、このプロジェクトはきっとHaskellのearly adopter(早期採用者)たちを引きつけるだろう。

この記事に星をつける

おすすめ度
スタイル

BT