BT

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

| 作者: Sebastien Auvray フォローする 0 人のフォロワー , 翻訳者 笹井 崇司 フォローする 0 人のフォロワー 投稿日 2009年8月31日. 推定読書時間: 2 分 |

原文(投稿日: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

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

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

このスレッドのメッセージについてEmailでリプライする

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

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT