写点什么

使用 Haskell 和 Hubris 加强 Ruby

2009 年 9 月 01 日

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

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

2009 年 9 月 01 日 01:021139
用户头像

发布了 90 篇内容, 共 28.4 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

淘宝网前期技术架构演进分析

andy

前端模拟假数据(json-server光速入门篇)

学习委员

json 前端 Node 28天写作 json-server

智慧平安小区APP,社区管理一体化平台

135深圳3055源中瑞8032

CSS实现数据统计

学习委员

前端 CSS小技巧 28天写作 纯CSS

数据中台:建立在数据网络效应之上的赛道

奇点云

大数据 数据中台 云原生 数据

Soul 源码阅读 05|Http 长轮询同步数据分析

哼干嘛

区块链落地商品溯源-区块链商品溯源方案

135深圳3055源中瑞8032

AI、IoT、区块链、自主系统、下一代计算五大技术引领未来供应链发展

京东科技开发者

区块链 AI IoT 供应链

工程师思维是什么?能吃吗?

Justin

工程师思维 架构设计 28天写作

Vue3 中 v-if 和 v-show 指令实现的原理 | 源码解读

五柳

源码分析 前端 Vue3

Volcano 监控设计解读,一看就懂

华为云开发者社区

Kubernetes 云原生 监控 Volcano 计算

技术根儿扎得深,不怕“首都”狂风吹!

Arvin

操作系统

你会读书吗?

xcbeyond

读书感悟 读书方式 28天写作

代码 or 指令,浅析ARM架构下的函数的调用过程

华为云开发者社区

函数 任务栈 arm架构

区块链作用之数字货币的影响

v16629866266

美国大选期间美股迎来大涨,舆情到底有何魔力?

星环科技

人工智能 人工智能大数据

区块链应用底层baas公共服务平台搭建,农产品溯源系统开发

WX13823153201

我们都很忙

Ian哥

28天写作

如何养成一个好习惯

熊斌

读书笔记 28天写作

个人隐私之老话重谈

张老蔫

28天写作

面对key数量多和区间查询低效问题:Hash索引趴窝,LSM树申请出场

华为云开发者社区

数据库 数据 存储 Hash索引 LSM树

音视频行业不可或缺的功能-云端录制

anyRTC开发者

音视频 WebRTC 在线教育 直播 RTC

漫谈HTTP协议

架构精进之路

HTTP 七日更 28天写作

年底跳槽之 如何找工作方向?

一笑

职业规划 28天写作

架构师训练营知识点思维导图

晴空万里

架构师训练营第2期

开发质量提升系列:用户体验

罗小龙

最佳实践 方法论 28天写作

HTML5中的拖放功能

魔王哪吒

html html5 程序员 面试 前端

区块链电子票据应用,区块链数字票据平台

135深圳3055源中瑞8032

《论雨伞道德》- 不要和自己的良心捉迷藏

石云升

读书笔记 28天写作 雨伞道德

机器学习应用设计阶段的 10 个陷阱和 11 个最佳实践

浪潮云

机器学习

微服务容错时,这些技术你要立刻想到

华为云开发者社区

微服务 线程 服务雪崩 断路器 服务降级

编译系统设计赛(华为毕昇杯)技术报告会|5月1日

编译系统设计赛(华为毕昇杯)技术报告会|5月1日

使用Haskell和Hubris加强Ruby-InfoQ