立即领取|华润集团、宁德核电、东风岚图等 20+ 标杆企业数字化人才培养实践案例 了解详情
写点什么

LFE 将 Lisp 编程带到 Erlang 虚拟机上

  • 2016-04-07
  • 本文字数:1475 字

    阅读完需:约 5 分钟

经过8 年的开发 Lisp Flavoured Erlang (LFE)达到了 1.0 版本,将 Lisp 编程稳定支持带到了 Erlang 虚拟机上(BEAM)。LFE 由 Erlang 最初开发者之一的 Robert Virding 创建。

LFE 是一个 Erlang 编译器的 Lisp–2(即类 Common Lisp)前端,这意味着它允许基于宏的元编程,并支持使用递归和高阶函数。为了同 Erlang 的理念保持一致,LFE 采用了一种消息传递参与者模型,该模型严格执行一种“无共享”范式,并完全支持模式匹配。由于它生成的代码同 Erlang 百分之百兼容,所以 LFE 可以同普通的 Erlang 和使用开放电信平台(OTP)的应用程序完美共存,其中,OTP 是Erlang 中一个中间件和库的集合,旨在支持创建高可用、并发、可扩展的架构

对于使用Erlang 和LFE 定义一个列表元素求和的递归函数的语法,下面的代码片段提供了一个基本的比较:

Erlang:

复制代码
sum(L) -> sum(L,0).
sum([], Total) -> Total;
sum([H|T], Total) -> sum(T, H+Total).

LFE:

复制代码
(defun sum (l) (sum l 0))
(defun sum
(('() total) total)
(((cons h t) total) (sum t (+ h total))))

按照 Lisp 惯例,LFE 可以通过 REPL 使用,这使得试用和试验这门语言的特性更容易。REPL 及其他用于任务管理、项目创建和依赖管理的工具均由 lfetool 项目提供。它可以通过 Docker 运行docker pull lfex/lfe进行安装,其中会包含创建和运行 LFE 项目所需的所有组件。

还有一点值得注意,LFE 维护者承担起了编写《计算机程序的构造和解释 LFE 版本的任务,该书是 Gerald Jay Sussman 和 Hal Abelson 的经典著作。不过,这项工作目前尚处于准备阶段。

为了了解更多关于这门语言的信息,InfoQ 采访了 lfetool 及许多 LFE 库的维护者 Duncan McGreggor。

经过多年的开发之后,LFE 近日达到了 1.0 版本。这意味着什么?对于在生产环境中使用,您如何评价 LFE 的稳定性或准备状态?

Robert 以前已经在 LFE 邮件列表和推特上提到过这一点,但 v1.0 本质上是随意定的。对于 1.0 版本,它已经准备好很长一段时间了。实际上,据我们了解,有多家知名公司和少数创业公司在生产环境中使用了 LFE。其中有一部分已经在生产环境中使用 LFE 几年了。这很容易理解,因为 LFE 的编译结果同 Core Erlang 百分之百兼容。Erlang 已经在生产环境中稳定运行几十年了。

在 Erlang 虚拟机上使用一门类 Lisp 语言有什么好处呢?

关于 Lisp 的好处,就是从 60 年代开始人们所说的那些:灵活性和通用性(借助 REPL、宏、同像性、轻松创建 DSL 的能力,等等。)将这些好处同 Lisp 社区数十年来所做的、可供 LFE 借鉴的有关语言 / 库的工作相结合,你会有非常令人印象深刻的资源可供汲取。虽然任何现代 Lsip 都可以添加 Erlang 的核心特性,诸如高并发和容错功能,但对于需要创建分布式系统的 Lisper 而言,LFE 有点让梦想变成现实。

您可以分享一些关于 LFE 路线图的见解吗?LFE SICP 的开发速度如何?

现在,对于 LFE,其中一个最为优先的事项是更新文档(合并、更新、支持多版本、让用户 / 读者更容易贡献)。为了让 LFE 社区成员统一到单个实用的用户体验上,相关工作值得我们花几年去做。那有许多工作要做!我们已经有了一个新的设计,目前正在探索从多个文档源生成内容。关于这一点,我们缓慢但稳步地推进,希望这些工作会受到 LFE 社区的欢迎。

有关将 SICP 转换成 LFE 的工作过去停滞了(由于主要编者的工作安排),但受到近来文档工作的鼓舞,那项工作已经重启。上周已经进行了多项支持性更新——很快会有更多的内容。

LFE 托管在 GitHub 上,可以从 Homebrew、Docker 和源代码安装

查看英文原文: LFE Brings Lisp to the Erlang Virtual Machine

2016-04-07 19:0010011
用户头像

发布了 1008 篇内容, 共 388.8 次阅读, 收获喜欢 344 次。

关注

评论

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

2021最全iOS面试题及底层视频分享专栏

ios 面试 音视频 iOS底层 iOS逆向

开发者的福音,go也支持linq了

happlyfox

学习 28天写作 2月春节不断更 Go 语言

第五周 第二课笔记

Geek_娴子

诊所数字化:实施私域,诊所店员的赋能路径

boshi

数字化医疗 私域运营 七日更 28天写作

成为阿里P7移动架构师到底有多难?带你快速通过字节跳动面试,讲的明明白白!

欢喜学安卓

android 程序员 面试 移动开发

“他者”德意志(二):“走稳路”的德国半导体

脑极体

备战金三银四必备:2021最新Java面试汇总(附答案解析)

比伯

Java 编程 架构 面试 计算机

第五周 第一课笔记

Geek_娴子

GitHub上连夜被下架!阿里巴巴2021版JDK源码笔记(2月第三版)

Java架构追梦

Java 阿里巴巴 面试 jdk源码 金三银四

涨薪50%,从小厂逆袭快手 - 附面经

haxianhe

面试

程序员成长第十四篇:做好时间管理(二)

石云升

程序员 时间管理 28天写作 2月春节不断更

公链,区块链的未来和归宿

CECBC

区块链

基于matlab的控制系统与仿真6-PID控制模型

AXYZdong

matlab 2月春节不断更

金融数字化转型浪潮呼啸而来 大数据区块链落地场景全面开花

CECBC

金融

神操:凭借“阿里Java脑图”,成功斩获腾讯、蚂蚁、B站、字节、滴滴等5个Offer

Java架构师迁哥

Nginx入门的基本使用和配置详解

数据库 架构 运维

架构设计篇之微服务实战笔记(八)

小诚信驿站

架构 刘晓成 小诚信驿站 28天写作

安卓开发环境!一份字节跳动面试官给你的Android技术面试指南,终获offer

欢喜学安卓

android 程序员 面试 移动开发

第五周作业

Ashley.

紧急寻人,还缺75万!区块链产业为何“一才难求”?

CECBC

区块链人才

三年Java开发,年底跳槽挂了阿里和字节,却收获美团offer,分享大厂面试心得

Java架构之路

Java 程序员 架构 面试 编程语言

Newbe.Claptrap 框架入门,第一步 —— 开发环境准备

newbe36524

Docker 云计算 分布式 微服务 .net core

Newbe.Claptrap 框架入门,第二步 —— 创建项目

newbe36524

Docker 云计算 分布式 微服务 .net core

2021最新华为面经分享:Java高分面试指南(25分类1000题50w字解析)

比伯

Java 编程 架构 面试 计算机

日记 2021年2月27日(周六)

Changing Lin

2月春节不断更

《华为技术认证HCNA网络技术实验指南》参考配置Ⅰ

依旧廖凯

华为 网络 交换机

第五周笔记

Ashley.

最新“美团+字节+腾讯”三面面经,你能撑到哪一面?

Java架构之路

Java 程序员 架构 面试 编程语言

普本毕业,阿里五面成功斩下offer,名校出身的我究竟输在哪?

Java架构之路

Java 程序员 架构 面试 编程语言

2021年金三银四Java面试突击大全,吃透这套Java真题合集,突破BAT面试官这道“防线”

Java 架构 面试

LeetCode题解:121. 买卖股票的最佳时机,JavaScript,动态规划,详细注释

Lee Chen

算法 大前端 LeetCode

LFE将Lisp编程带到Erlang虚拟机上_Erlang_Sergio De Simone_InfoQ精选文章