2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

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

关注

评论

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

PingCAP黄东旭:Serverless是数据库的未来形态

TiDB 社区干货传送门

数据库前沿趋势

模型推理耗时降低98%!PaddleTS又双叒叕带来重磅升级!

飞桨PaddlePaddle

paddle

龙智宣布与Incredibuild建立战略合作伙伴关系

龙智—DevSecOps解决方案

DevSecOps 加速编译

产研指南针的量化指标实践笔记

车江毅

项目管理 研发管理 降本增效 北极星指标 效能度量

舞台LED显示屏对灯光设计产生了哪些影响

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家

一文详解数GaussDB(DWS)函数出参带出方式

华为云开发者联盟

数据库 后端 华为云 企业号 2 月 PK 榜 华为云开发者联盟

云数据库 TiDB 体验——部分故障问题与解决方法

TiDB 社区干货传送门

版本测评 新版本/特性解读 6.x 实践

如何在 Web 端实现一个多人数独游戏

声网

Vue 互动白板 RTE

br备份时排除某个库

TiDB 社区干货传送门

实践案例 备份 & 恢复

2023最好用的10个开发者工具!每一个都让你效率翻倍

popo223344

工具 测试 后端

选择等保测评机构需要注意的几个点-行云管家

行云管家

等保 等级保护 等保测评

云端智创 | 基于视频AI原理的音视频智能处理技术

阿里云CloudImagine

云计算 音视频

职场IT老手教你3步教你玩转可视化大屏设计,让领导眼前一亮!

葡萄城技术团队

【SOP】新扩容节点与集群版本不一致处理

TiDB 社区干货传送门

实践案例 版本升级 管理与运维 故障排查/诊断 扩/缩容

在线研讨会邀请 | 赋能“大”研发,助力“快”交付

龙智—DevSecOps解决方案

版本控制 线上研讨会 研讨会 数字资产管理

剖析字节案例,火山引擎A/B测试DataTester如何“嵌入”技术研发流程

字节跳动数据平台

大数据 AB testing实战 企业号 2 月 PK 榜

快速入门API Explorer

华为云开发者联盟

云计算 华为云 API Explorer平台 企业号 2 月 PK 榜 华为云开发者联盟

MASA Stack 1.0 发布会讲稿——实践篇

MASA技术团队

.net MASA MAUI MASA Stack

模块1作业

王琨琨

架构实战营

带你动手做AI版的垃圾分类

华为云开发者联盟

人工智能 华为云 企业号 2 月 PK 榜 华为云开发者联盟 垃圾分类

Fastjson踩“坑”记录和“深度”学习

阿里技术

Fastjson

Java程序员:为了跳槽刷完1000道真题,想不到老板直接给我升职了

程序知音

Java java面试 Java面试题 Java面试八股文 后端面试

【2.3-2.10】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

Apipost如何快速生成并分享API实时文档

popo223344

后端

代码质量与安全 | 开发人员必备的安全编码实践指南

龙智—DevSecOps解决方案

代码安全 静态代码扫描

ITSM | 限时优惠,帮助您的团队终结不良服务管理!

龙智—DevSecOps解决方案

Jira ITSM IT服务管理

全板电镀与图形电镀,到底有什么区别?

华秋电子

PCB PCB生产

JVM说--直接内存的使用

京东科技开发者

JVM io nio 虚拟机 企业号 2 月 PK 榜

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