使用Haskell和Hubris加强Ruby

借助Hubris可以在Ruby中调用Haskell代码以提高性能。通过编写Haskell文件并使用特定命令导出函数,最终通过Ruby/DL加载动态库实现跨语言调用。此方法适用于希望突破Ruby性能限制的应用。

在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 -\u0026gt; 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将会在九月份举办的rorosyd做一个关于Hubris的讲座。尽管只是初步意向,但是这个讲座肯定会吸引一些Haskell的用户。

\

查看英文原文:Empower Your Ruby With Haskell And Hubris

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值