限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

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

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

关注

评论

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

ffmpeg实现web在线转码

lo

4月月更

龙蜥开源Plugsched:首次实现 Linux kernel 调度器热升级 | 龙蜥技术

OpenAnolis小助手

Linux 内核 龙蜥社区 Plugsched

私有链还有未来吗?

CECBC

Improvements of Job Scheduler and Query Execution on Flink OLAP

Apache Flink

大数据 flink 编程 实时计算 OLAP

基于 HTML+CSS+JS 的石头剪刀布游戏

海拥(haiyong.site)

html 大前端 游戏 4月月更

Spring 完美导入 IDEA

阿Q说代码

spring IDEA 4月月更

使用FFMPEG自动剪辑视频

十三

墨水屏的“硬伤”与福气

脑极体

融合通信常见问题3月刊 | 云信小课堂

网易云信

前端

CTF逆向涉及的各种加密算法

网络安全学海

网络安全 信息安全 CTF 渗透测试 漏洞挖掘

衡石BI产品预置明道云数据连接器

明道云

Hoo虎符研究院|从多个方面了解公链Tezos和它的 Ithaca 2 升级

区块链前沿News

Hoo 虎符交易所 研究院 tezos

百度信誉保障服务架构全解析

百度Geek说

后端

数栈在湖仓一体上的探索与实践

袋鼠云数栈

数据库 大数据 数据湖 湖仓一体

什么是元宇宙?为何要关注它?

CECBC

云效制品仓库 Packages,不限容量免费用

阿里云云效

云计算 maven 阿里云 npm 制品仓库

GaussDB(for Redis)助力《余烬风暴》实力上线,给您沉浸式魔幻体验

华为云数据库小助手

GaussDB GaussDB ( for Redis )

北京市东城区赵海东副区长一行莅临博睿数据参观指导

博睿数据

一个公式告诉你:如何提升团队的研发效率?

凌晞

技术管理 研发效率

恒源云(Gpushare)_没有你想要的镜像?技巧大放送5!

恒源云

镜像仓库 显卡、gpu

netty系列之:netty中的核心MessageToMessage编码器

程序那些事

Java Netty 程序那些事 4月月更

RabbitMQ 实现延时队列(订单定时取消为例)

Ayue、

Rabbit MQ 4月月更

实时数仓建设

五分钟学大数据

实时计算 4月月更

腾讯云CDW-ClickHouse云原生实践

腾讯云大数据

Clickhouse 云数据仓库

Flink 实践教程-进阶(11):SQL 关联:Regular Join

腾讯云大数据

flink 流计算 流计算 Oceanus

透过「人月神话」,看清软件开发问题

架构精进之路

软件开发 人月神话 4月日更 4月月更

两步实现让antd与IDE和睦相处的处理案例

袋鼠云数栈

大数据 开源

阿里Maven仓库不限容量,免费用

阿里云云效

云计算 阿里云 npm Maven仓库 制品仓库

Flink 实践教程-入门(10):Python作业的使用

腾讯云大数据

Ribbon从入门到源码解析

李子捌

微服务 SpringCloud Ribbon

Web 3.0的未来产业趋势

王强

Web 3.0

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