写点什么

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

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

关注

评论

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

【建议收藏】吐血整理Golang面试干货21问-吊打面试官-1

利志分享

golang golang 面试

在线YAML转Properties工具

入门小站

工具

活动预告 | 4月23日,多场OpenMLDB精彩分享来袭,不负周末好时光!

第四范式开发者社区

机器学习 数据库 AI 特征 特征平台

被滥用的“架构师”!

博文视点Broadview

从mybatis-plus-generator看如何编写代码生成器

Rubble

4月日更 4月月更

EventBridge 集成云服务实践

阿里巴巴云原生

外包学生管理系统架构设计文档

大眼喵

「架构实战营」

模块三:外包学生管理系统-架构设计文档

jiaoxn

「架构实战营」

如何构建一个可“持续演进”的可观测体系?| QCon

阿里巴巴云原生

嵌入式Linux下完成LCD屏文字显示(帧缓冲框架)

DS小龙哥

4月月更

架构实战营-模块三-作业

michael

架构实战营 #架构实战营 「架构实战营」

Java 并发编程总结

Joseph295

外包学生管理系统详细架构设计文档

高山觅流水

「架构实战营」

架构实战训练 模块三

小马

「架构实战营」

java培训redis的集群策略

@零度

redis JAVA开发

vue中使用element-resize-detector

CRMEB

外包学生管理系统的架构文档

鱼恨水

云原生架构下的微服务选型和演进

阿里巴巴云原生

Robot OS驱动开发

轻口味

c++ android Robot 4月月更 AOSP

一起学习Python的Sanic框架:路由和蓝图

宇宙之一粟

Python 4月月更 sanic

Java类应用高内存问题排查指南

中原银行

Java JVM 问题排查 中原银行 高内存

Ampere Computing释放观测云“芯”算力,强强联合推动可观测性发展

观测云

可观测性 可观测

超越 iTerm!号称下一代 Terminal 终端神器,用完爱不释手!

沉默王二

观测云入驻阿里云计算巢,为用户构建稳定安全的云上连接

阿里云弹性计算

在互联网+的背景下,企业如何创新客户服务?

小炮

客户服务

在线CSV转YAML工具

入门小站

工具

模块三作业

天琪实刚亮

云原生微服务的下一站,微服务引擎 MSE 重磅升级

阿里巴巴云原生

长沙好人

成周

spring-cloud-kubernetes自动同步k8s的configmap更新

程序员欣宸

Java Kubernetes 4月月更

【课程汇总】Hello HarmonyOS系列课程,手把手带你零基础入门

HarmonyOS开发者

HarmonyOS ArKUI 3.0

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