AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

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

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

关注

评论

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

模块四作业

程序员小张

「架构实战营」

什么样的故障让阿里云换了总裁?

慕枫技术笔记

云计算 后端

MySql 应用程序常见问题

Andy

数据分析设计模式

agnostic

数据分析模式

Studio One2023免费中文版安装下载

茶色酒

Studio One 5 Studio One2023

在别墅大宅中打造全屋智能,总共需要几步?

脑极体

全屋智能

log4j 默认配置文件

JefferLiu

重磅发布 | 博睿数据发布金融行业精选客户案例集

博睿数据

可观测性 智能运维 博睿数据 精选案例

华为云代码检查服务CodeArts Check深度解读——代码缺陷早发现,全面守护软件质量和安全

科技热闻

「Go框架」抽丝剥茧:探究iris路由的底层存储结构

Go学堂

golang 开源 程序员 个人成长

架构实战4-千万学生试卷存储方案

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

个税通识

清风明月

千万学生管理系统存储架构设计

陈天境

模块四:存储架构模式

程序员小张

秒杀系统架构设计

Johnny

「架构实战营」

EMQ受邀出席华为云Top SaaS领航者私享会,共话SaaS企业发展未来

EMQ映云科技

物联网 IoT 华为云 emq 企业号 1 月 PK 榜

电商秒杀系统架构设计

小虎

架构训练营

不会数学的程序员,只能走到初级开发工程师!

小傅哥

Java 数据结构 算法 数学 小傅哥

架构实战营第 10 期 - 模块四作业:设计千万级学生管理系统的考试试卷存储方案

kaizen

「架构实战营」

极客时间架构训练营模块四作业

现在不学习马上变垃圾

架构训练营10期

关于Linux内存回收的几个问题

SkyFire

内存 Linux Kenel

数据库故障致美国超一万航班取消或延迟

NineData

数据库 运维 数据库开发 数据备份 数据系统

ETL 引擎 engine 适配 elasticsearch

weigeonlyyou

oracle Prometheus ETL Elastic Search InfluxDB Cluster

AIGC神器CLIP:技术详解及应用示例

Baihai IDP

人工智能 AI AIGC CLIP

架构实战营-电商秒杀系统设计

Geek_b35d92

架构 秒杀 电商

Apache Flink 社区 2022 年度报告:Evolution, Diversity, Connection

Apache Flink

大数据 flink 实时计算

如何理解高性能服务器的高性能、高并发?

GPU算力

线程 线程池 协程

认识区块链,认知区块链——Web3

MavenTalker

区块链 web3

FL Studio23最新永久版水果软件下载教程

茶色酒

FL Studio2023

【面试题】Java 2个(多个)大整数相加如何实现

石臻臻的杂货铺

Java’

2023-01-15:销售员。编写一个SQL查询,报告没有任何与名为 “RED” 的公司相关的订单的所有销售人员的姓名。以 任意顺序 返回结果表。 DROP TABLE IF EXISTS `com

福大大架构师每日一题

数据库 sql 福大大

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