NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

关注

评论

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

重磅消息 | Amazon MemoryDB for Redis闪亮登场!

亚马逊云科技 (Amazon Web Services)

Data

Java 性能调优必备利器—JMH

编程江湖

JMH java编程

OceanBase 联合山东移动斩获殊荣:入选2021年信息技术应用创新安全优秀解决方案

OceanBase 数据库

信息安全 工信部 oceanbase 获奖 山东移动

实用机器学习笔记二十一:集成学习之Bagging

打工人!

人工智能 机器学习 学习笔记 集成学习 12月日更

求适借力,共生共强|明道云伙伴大会(2021/秋)完满落幕

明道云

揭秘远程证明架构EAA:机密容器安全部署的最后一环 | 龙蜥技术

OpenAnolis小助手

容器 龙蜥社区

让自家APP跑小程序的技术产品都有哪些?

Speedoooo

ios开发 APP开发 容器安全 Andriod开发 小程序容器

需求蔓延,常见但不正常,教你如何破

华为云开发者联盟

敏捷 需求

前端开发之Nginx单页加载优化

@零度

nginx 前端开发

身兼数职的Amazon DocumentDB,还有什么不为人知的功能?

亚马逊云科技 (Amazon Web Services)

Data

40张图+万字,从9个数据类型帮你稳稳的拿捏Redis 数据结构

华为云开发者联盟

数据库 redis 数据结构 Redis 数据结构

Java 开发之Linux 命令知识的积累

@零度

Java linux命令

区块链的价值和未来趋势

CECBC

用链式调用的方式来给代码减负

为自己带盐

dotnet 28天写作 12月日更

张家口赛区全力推进,数字人民币备战冬奥场景全覆盖

CECBC

为什么 SASE 很重要?

devpoint

SD-WAN sase 12月日更

科技助力新冠防疫——构建 COVID-19 知识图谱

亚马逊云科技 (Amazon Web Services)

Data

关于Amazon Redshift性能调优的十大Tips

亚马逊云科技 (Amazon Web Services)

Data

netty系列之:一口多用,使用同一端口运行不同协议

程序那些事

Java Netty nio 程序那些事 12月日更

边缘AI研发落地生态挑战调研报告

华为云开发者联盟

机器学习 AI 边缘

HIVE中临时表创建

编程江湖

大数据 Hive SQL

quest2上手初体验

wood

28天写作 元宇宙 quest2

给弟弟的信第20封|珍爱生命,远离传销

大菠萝

28天写作

为Amazon DMS数据库迁移任务建立自动化监控机制

亚马逊云科技 (Amazon Web Services)

Data

React vs Angular vs Vue.js 那个前端框架更好

编程江湖

前端开发 Javascript框架

The Data Way Vol.8|离开了代码,还能被称为工程师吗?

SphereEx

开源 ShardingSphere SphereEx OpenSEC 工程师文化

我的记忆心法拆解一

将军-技术演讲力教练

阿里云弹性计算首席架构师分享云上应用架构演进三大方向

阿里云弹性计算

2021 年 25 大 DevOps 工具(上)

禅道项目管理

DevOps 工具

干货来了!神州数码 CIO 沈旸揭秘 Hackathon 背后的 TiDB 生态丨TiDB Hackathon 评委访谈

PingCAP

数字人民币成功落地需破解三大难点

CECBC

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