BT

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(早期採用者)たちを引きつけるだろう。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

BT

あなたのプロファイルは最新ですか?プロフィールを確認してアップデートしてください。

Eメールを変更すると確認のメールが配信されます。

会社名:
役職:
組織規模:
国:
都道府県:
新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。