AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

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

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

关注

评论

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

Windows-Python 应用:使用消息操作窗口

霍格沃兹测试开发学社

Android动态权限详解

霍格沃兹测试开发学社

轻量级工作流引擎的设计与实现

京东科技开发者

工作流 流程 工作流引擎 迭代 轻量级工作流引擎

面试 | 互联网大厂测试开发岗位会问哪些问题?

霍格沃兹测试开发学社

测试面试题集锦(四)| Linux 与 Python 编程篇(附答案)

霍格沃兹测试开发学社

技术分享 | Web自动化之显式等待与隐式等待

霍格沃兹测试开发学社

测试人生 | 疫情之下,1个月内涨薪50%拿下亿级流量金融上市公司新 offer,我柠檬了~

霍格沃兹测试开发学社

APK 逆向工程 - 解析 apk 基本信息和方法调用图

霍格沃兹测试开发学社

GOPS现场 | 芯片行业需要怎样的版本管理工具——对话龙智大规模安全研发技术专家

龙智—DevSecOps解决方案

版本控制 版本管理工具 版本管理 版本控制工具

【Java面试宝典】带你拿offer

钟奕礼

Java 面试 java;

幂等设计详解

京东科技开发者

数据库 系统架构 幂等 研发 幂等设计

IDC:云效产品能力No.1,领跑中国DevOps市场

阿里云云效

DevOps 数字化 产品研发 DevOps工具链

阿里大哥手把手教你从零到一搭建Spring Cloud Alibaba!太强了

Geek_0c76c3

Java 数据库 开源 架构 面经

测试人生 | 00后0经验应届毕业生拿下2线城市15W offer,好励志~

霍格沃兹测试开发学社

史上最全的Java容器集合之ArrayList(源码解读)

自然

9月月更

leetcode 208. Implement Trie (Prefix Tree) 实现 Trie (前缀树) (中等)

okokabcd

LeetCode 数据结构与算法

LP单双币双池挖矿dapp系统开发技术详情

开发微hkkf5566

JAR 文件规范详解

霍格沃兹测试开发学社

Golang开发入门(一)

霍格沃兹测试开发学社

探究 PHP_CodeSniffer 的代码静态分析原理

霍格沃兹测试开发学社

羊了个羊NFT系统链游开发技术

薇電13242772558

游戏 NFT

HUE部署

峥岳

hue 安装部署 9月月更

栓Q了,大厂被强制毕业,空窗一个月死背八股文,还好拿到了Offer

Geek_0c76c3

Java 数据库 开源 架构 开发

Demo Day直播 | 成长计划解决方案学生挑战赛一等奖即将揭晓!

OpenHarmony开发者

Open Harmony

对于火热的MLOps的一些冷静观察

Baihai IDP

人工智能 机器学习 AI MLOps

技术分享 | Web 控件定位与常见操作

霍格沃兹测试开发学社

技术分享 | web 控件的交互进阶

霍格沃兹测试开发学社

技术分享 | web自动化测试-执行 JavaScript 脚本

霍格沃兹测试开发学社

技术分享 | 网页 frame 与多窗口处理

霍格沃兹测试开发学社

Tensorflow 2.x 模型-部署与实践

霍格沃兹测试开发学社

史上最全的Java容器集合之基础数据结构(手撕链表)

自然

9月日更

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