HaskellとHubrisを使用してRubyを強化

1235 ワード

RubyまたはRailsアプリケーションにCコードを埋め込むことは性能のボトルネックを解決する方法の一つであり,RubyInlineはこのプロセスを大幅に簡略化した.Rubyコミュニティも他の関数言語コミュニティと緊密に結びついており,Erlang,Caml,Haskellを含む:ErlectricityはすでにErlangと接続する絆となっているが,rocamlはObjective Camlと対話することができる.ApacheのThriftは別の方法(PRCとシーケンス化フォーマットによる)で他の言語と対話する.
Mark WottonはHubrisを記述し,RubyでHaskellコードを呼び出すことを可能にした.Haskellプラットフォームに搭載されているghcをインストールしてjhc(JohnのHaskellコンパイラ)と互換性を持つ必要がありますが、jhcはLinuxまたはMacプラットフォームの下でしか実行できないことに注意してください.
これらのニーズがあれば、まずHaskellファイルを作成し、カスタム関数に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コードを大胆に作成し、Ruby/DLを使用してダイナミックライブラリ呼び出しでエクスポートした関数をロードすることができます.

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のユーザーを引き付けるに違いない.
原文:Empower Your Ruby With Haskell And Hubris