写点什么

使用 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:021100
用户头像

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

关注

评论

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

那些会阻碍程序员成长的细节[3]

码闻强

程序员 职业规划 职业成长

架构师训练营 - 第 3 周学习总结

红了哟

游戏夜读 | 这是一款情绪游戏

game1night

学写PEP,参与Python语言的设计

早睡蟒

Python Python PEP PEP

JDBC 批量插入:MyBatis、PostgreSQL

羊八井

postgresql mybatis JDBC

mysql字符匹配批量修改

毛佳伟🐳

MySQL

[深入理解Redis]读取RDB文件

老胡爱分享

redis 源码阅读

玩转Java8中的 Stream 之从零认识 Stream

Java小咖秀

学习 stream java8 Java 面试 经验

架构师训练营第四周作业

hiqian

揭秘!中国人一定要知道的北斗卫星系统

程序那些事

北斗卫星 北斗系统 卫星定位 卫星授时 黑科技

如何搭建一个Hadoop集群

Rayjun

大数据 hadoop

重学 Java 设计模式:实战中介者模式「按照Mybatis原理手写ORM框架,给JDBC方式操作数据库增加中介者场景」

小傅哥

设计模式 小傅哥 代码优化 代码规范 中介者模式

架构师训练营 - 第 3 周命题作业

红了哟

serverless之一:入门

毛佳伟🐳

Serverless

在以后的高校招生中,应用区块链技术,可以防、治冒名顶替吗?

CECBC区块链专委会

区块链技术 高考 信息防篡改

软件架构语录

hiqian

Tapd 自定义字段+需求视图+报表,轻松研发管理

飞哥

极客时间,项目管理 项目管理

架构师训练营第四周总结

hiqian

区块链≠分布式账本,别再傻傻分不清

CECBC区块链专委会

区块链技术 高考 信息防篡改

限频/限流的一些思考

i风语

Java redis 微服务 sentinel ratelimiter

疫情常态下区块链构建分布式数字身份

CECBC区块链专委会

疫情 区块链技术 分布式数字身份

ARTS 第四周 6.15-6.21

我笔盒呢

ARTS 第五周 6.21-6.28

我笔盒呢

架构师训练营:第四周第一节,互联网架构系统架构的演化

zcj

极客大学架构师训练营

ARTS打卡-04

Geek_yansheng25

Github仓库如何选择开源许可证

早睡蟒

GitHub 开源许可证 GitHub license

Week2:作业二

车小勺的男神

ARTS - Week 4

Khirye

ARTS 打卡计划 arts

势能造就下的互联网大厂程序员为什么去开滴滴了?

非著名程序员

程序员 程序人生 提升认知 程序员成长

iOS 动画 - 窗景篇(三·完结)

柯烂

ios swift 动画 移动互联网 动效

一群龙舟划手 “拍了拍” 你:端午节安康~

BonreeAPM

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

使用Haskell和Hubris加强Ruby-InfoQ