写点什么

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

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

关注

评论

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

web前端培训:js算法面试es6实现

@零度

JavaScript ES6

Android编译优化系列-kapt篇

字节跳动终端技术

android 字节跳动 编译优化 火山引擎 火山引擎MARS

深入分析沙箱逃逸漏洞

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞

性能测试中过滤异常的响应时间

FunTester

性能测试 HTTP 接口测试 响应时间 FunTester

Web 键盘输入法应用开发指南 (5) —— 实战技巧

天择

JavaScript 键盘 实战 输入法 3月月更

Docker原理——数据包怎么发出去

kof11321

容器 原理 容器网络方案

45个 GIT 经典操作场景,专治不会合代码

程序员小富

git

注入语句详解(get注入,cookie注入,搜索型注入等)

喀拉峻

网络安全

编程术语的类比(一)

北极的大企鹅

思维转换 编程思想

烂书!《气候经济与人类未来》

懒时小窝

烂书

推荐 10 本 Go 经典书籍,从入门到进阶(含下载方式)

AlwaysBeta

Go golang 编程语言 书单推荐 Go 语言

编程和英语,数学到底什么关系

北极的大企鹅

思维转换 编程思想

教你3种Kafka的指定副本作为Leader的实现方式

华为云开发者联盟

Leader Kafk 副本 AR顺序

ZStack 与龙蜥操作系统完成兼容性认证,共同打造安全可信的云+OS技术生态

OpenAnolis小助手

云计算 开源 操作系统 云平台

大数据培训:Kafka存储结构及Log清理机制

@零度

大数据 kafka log

NFT卡牌盲盒游戏系统开发搭建

薇電13242772558

NFT

ICLR 2022|唯快不破!北航、NTU、百度飞桨提出面向极限压缩的全二值化BiBERT

百度大脑

你真的会 i++吗

爱笑的小雨

千万级学生管理系统的考试试卷存储方案

阿卷

架构实战营

java培训:多个线程同时访问一个类是否有问题方法

@零度

JAVA开发

在数字化与绿色的双轮之间,华为为全球企业搭建一道“车轴”

脑极体

不联网的情况下,使用 electron-builder 快速打包全平台应用

编程三昧

Electron 3月月更 electron-builder

编程术语的类比(二)

北极的大企鹅

学习 思维转换 编程思想

别再用 Redis List 实现消息队列了,Stream 专为队列而生

CRMEB

深度剖析数仓CN增量备份技术

华为云开发者联盟

华为云 备份 GaussDB(DWS) 备份容灾 CN增量备份

详解Swin Transformer核心实现,经典模型也能快速调优

百度大脑

推荐学java——SpringMVC第一课

逆锋起笔

springmvc java框架 Spring Java 3月月更

OceanBase 推出全新品牌 slogan

OceanBase 数据库

数据库 oceanbase 品牌slogan

数字化时代,银行如何建设管理小程序平台促进线上金融业务发展?

FinClip

小程序 银行

不会Netty,你永远是个Java菜鸟

博文视点Broadview

加入XTransfer,和技术大咖一起大展身手!

XTransfer技术

程序员 招聘 跨境支付

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