50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

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

关注

评论

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

n 阶幻方问题

DoneSpeak

algorithm

Protobuf与Json的相互转化

DoneSpeak

json protobuf serialization

漏洞挖掘分析技术总结

网络安全学海

运维 网络安全 信息安全 渗透测试· 漏洞分析

Java 工具箱 | 图片-Base64 互转

DoneSpeak

架构设计方法论

king

SpringBoot解决CORS问题

DoneSpeak

springboot

Spring Security认证流程

DoneSpeak

spring security springsecurity

Spring Event初步讲解

DoneSpeak

spring

柯桥插花花艺培训到兴德!良心机构!

Geek_196d9f

如何画好架构图

king

初步认识 Stripe 支付

DoneSpeak

Payment

MySql 全文检索两个字符的内容无法得到结果

DoneSpeak

MySQL

用回溯法计算消消乐游戏最大得分

DoneSpeak

algorithm

推荐系统的UI交互与视觉展示(二十七)

Databri_AI

人工智能 算法 推荐系统

我用一个例子疏通“路由器漏洞&复现”【建议收藏!!】

网络安全学海

运维 网络安全 信息安全 漏洞分析 代码复现

Go 并发编程-共享变量

Rayjun

Go 语言

SpringMVC | Controller 返回值及异常的统一处理

DoneSpeak

spring RESTful

Git-Flow规范和指令

DoneSpeak

git Teamwork

为easyexcel设置TimeZone

DoneSpeak

Excel Apache POI

LeetCode | 13. 罗马数字转整数

DoneSpeak

LeetCode algorithm

柯桥摄影培训到兴德教育!良心机构!

Geek_196d9f

从Ftrace开始内核探索之旅

mazhen

Linux debug Trace Linux Kenel

模块7作业

wade

#架构实战营

实现自己的Protobuf Any

DoneSpeak

protobuf

只有思考清晰,才能表达有力!

云祁

读书 7月日更

Protobuf与POJO的相互转化 - 通过Json

DoneSpeak

json protobuf serialization

【得物技术】浅谈资损防控

得物技术

测试 质量 稳定性 稳定性测试 资产管理

CabloyJS 基于 EggJS 实现的模块编译与发布

node.js 全栈

1.3面向复杂度的架构设计

Lemon

架构设计 架构设计原则

架构训练营模块七作业

Geek_e0c25c

架构实战营

如何做好架构设计?

king

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