写点什么

使用 Haskell 和 Hubris 加强 Ruby

  • 2009-09-01
  • 本文字数:595 字

    阅读完需:约 2 分钟

在 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-09-01 01:023023
用户头像

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

关注

评论

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

2021年阿里、腾讯、百度

爱好编程进阶

Java 面试 后端开发

2021最新Java面试标准,26个技术点一千多道面试题全曝光,赶紧学

爱好编程进阶

Java 面试 后端开发

35K成功入职蚂蚁金服,现分享面试Java后端经历「内含面试题

爱好编程进阶

Java 面试 后端开发

未来十年,什么开发工程师最火爆?

TinTinLand

区块链

将博客搬至CSDN

爱好编程进阶

162基于springboot宠物管理系统

爱好编程进阶

Java 面试 后端开发

大数据培训flink中核心设计、抽象和线程模型

@零度

flink Netty 大数据开发

线程和进程有什么区别?

InfoQ IT百科

如何在给定数组中执行二元搜索?

InfoQ IT百科

3 个方法,教你提升程序员的自我价值

爱好编程进阶

Java 面试 后端开发

Authing 正式加入 W3C 组织,将参与相关国际标准制定

Authing

开发者 云原生 API Idaas W3C

分享15款免费好用的中文字体

源字节1号

网站开发

如何使用堆栈算出两个链表的总和?

InfoQ IT百科

为什么计算机启动最开始的时候执行的是BIOS代码而不是操作系统自身的 代码?

InfoQ IT百科

GPU微架构回顾

Finovy Cloud

GPU服务器 GPU算力

Activiti 自定义表单流程(全流程演示)

爱好编程进阶

Java 面试 后端开发

一个完整的计算机系统是由什么组成的?

InfoQ IT百科

在一个元素为 1 到 100 的整数数组中,如何搜索缺失元素?

InfoQ IT百科

浅析Redis分布式集群倾斜问题

五分钟学大数据

redis 4月月更

5年crud“经验”

爱好编程进阶

Java 面试 后端开发

java培训Redis的库存扣减操作

@零度

redis JAVA开发

1000道阿里巴巴初级~高级Java工程师面试题(含答案

爱好编程进阶

Java 面试 后端开发

在不使用任何库的情况下,如何反转给定句子中的单词?

InfoQ IT百科

2021最新一次Java面试,快手三面一轮游,如今已拿意向书

爱好编程进阶

Java 面试 后端开发

axios发送post请求,springMVC接收不到数据问题

爱好编程进阶

Java 面试 后端开发

乙巳篇 天、地、人三才立 《「內元宇宙」聯載》

因田木

中庸

给定一个乱序数组,如何搜索最大和最小元素?

InfoQ IT百科

1000页神仙文档,连阿里P8面试官都说太详细了,面面俱到!搞懂这些直接P6+

爱好编程进阶

Java 面试 后端开发

线程的定义是什么?

InfoQ IT百科

在没有递归的情况下如何反转单链表?

InfoQ IT百科

如何在没有递归的情况下通过对给定二叉树执行中序遍历来打印所有节点?

InfoQ IT百科

使用Haskell和Hubris加强Ruby_Ruby_Sebastien Auvray_InfoQ精选文章