当前位置:虚拟化行业动态 → 正文

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

责任编辑:editor006 作者: Sergio De Simone |来源:企业网D1Net  2016-04-08 16:47:50 本文摘自:INFOQ

经过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 

关键字:LFEErlangLisp语言

本文摘自:INFOQ

x LFE将Lisp编程带到Erlang虚拟机上 扫一扫
分享本文到朋友圈
当前位置:虚拟化行业动态 → 正文

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

责任编辑:editor006 作者: Sergio De Simone |来源:企业网D1Net  2016-04-08 16:47:50 本文摘自:INFOQ

经过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 

关键字:LFEErlangLisp语言

本文摘自:INFOQ

电子周刊
回到顶部

关于我们联系我们版权声明隐私条款广告服务友情链接投稿中心招贤纳士

企业网版权所有 ©2010-2024 京ICP备09108050号-6 京公网安备 11010502049343号

^