Macros are a common part of Lisp languages, and one of their most lauded features. Much research has gone into making macros both safer and more powerful resulting in developments in multiple areas, including maintaining hygiene, and typed program staging. However, macros do suffer from various downsides, including being second-class. Particularly egregious for eager functional programming, they are unable to be passed to higher-order functions or freely composed. Fexprs, as reformulated by John Shutt, provide a first-class and more powerful alternative to macros that meshes well with pure functional programming. Unfortunately, naive execution of fexprs is much slower than macros due to re-executing unoptimized operative combiner code at runtime that, in a macro-based language, would have been expanded and then optimized at compile time. To show that fexprs can be practical replacements for macros, we formulate a small purely functional fexpr based Lisp, Kraken, with an online partial evaluation and compilation framework that supports first-class, partially-static-data environments and can completely optimize away fexprs that are used and written in the style of macros. We show our partial evaluation and compilation framework produces code that is more than 70,000 times faster than naive interpretation due to the elimination of repeated work and exposure of static information enabling additional optimization. In addition, our Kraken compiler performs better compared to existing interpreted languages that support fexprs, including improving on NewLisp's fexpr performance by 233x on one benchmark.


翻译:摘要:宏是 Lisp 语言常见的一部分,也是它最受推崇的特性之一。为使宏更加安全和强大,进行了大量的研究,这些研究在多个方面开展,例如保持卫生、类型化程序分段等。 然而,宏也存在不少缺点,其中包括作为二等民族。对于热切的函数式编程,这尤其令人不满,因为他们无法传递给高阶函数或自由组合。由 John Shutt 重新制定的 Fexprs 为宏提供了第一类和更强大的替代方案,与纯函数式编程很好地融合。不幸的是,由于在运行时重新执行未优化的操作组合器代码,与基于宏的语言中所展开并在编译时优化的代码相比,Fexprs 的天真执行速度要慢得多。为了展示 Fexprs 可以成为宏的实用替代品,我们制定了一种基于 Fexprs 的小型纯函数 Lisp,Kraken,它具有在线部分求值和编译框架,支持第一类、部分静态数据环境,并且可以完全优化掉使用和以宏风格编写的 fexprs。我们展示了我们的部分求值和编译框架生成的代码比天真解释快 70,000 多倍,因为消除了重复的工作并暴露了静态信息,从而实现了更多的优化。此外,我们的 Kraken 编译器与支持 fexprs 的现有解释语言相比表现更佳,其中在一项基准测试中 NewLisp 的 fexpr 性能提高了 233 倍。

0
下载
关闭预览

相关内容

高阶和符号计算是一本国际期刊,它提供了一个广谱论坛,讨论高阶和符号设施编程的结果和思想:一级函数和延续、效果和高阶类型、对象、参与者和数据程序。内容包括从理论和设计到实践和经验的论文,尤其是实践中使用的理论。该杂志促进具有广泛兴趣和专业知识的研究人员之间的思想交流和协同作用。覆盖范围包括带效果的函数编程;面向对象编程;并行、并发、分布式和移动符号和函数计算;编程概念和抽象-数据抽象、延迟计算、无限数据对象、自引用、反射、连续、组件、通用函数,继承、封装、保护、持久性、元对象、通信协议等等。官网链接:https://link.springer.com/journal/10990
专知会员服务
155+阅读 · 2021年3月6日
专知会员服务
98+阅读 · 2020年12月19日
Keras François Chollet 《Deep Learning with Python 》, 386页pdf
专知会员服务
151+阅读 · 2019年10月12日
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
【哈佛大学商学院课程Fall 2019】机器学习可解释性
专知会员服务
103+阅读 · 2019年10月9日
微软全力拥抱 Java !
CSDN
0+阅读 · 2022年9月7日
VCIP 2022 Call for Demos
CCF多媒体专委会
1+阅读 · 2022年6月6日
Hierarchically Structured Meta-learning
CreateAMind
26+阅读 · 2019年5月22日
深度自进化聚类:Deep Self-Evolution Clustering
我爱读PAMI
15+阅读 · 2019年4月13日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
16+阅读 · 2018年12月24日
笔记 | Sentiment Analysis
黑龙江大学自然语言处理实验室
10+阅读 · 2018年5月6日
Reinforcement Learning: An Introduction 2018第二版 500页
CreateAMind
11+阅读 · 2018年4月27日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
Arxiv
0+阅读 · 2023年5月10日
VIP会员
相关VIP内容
专知会员服务
155+阅读 · 2021年3月6日
专知会员服务
98+阅读 · 2020年12月19日
Keras François Chollet 《Deep Learning with Python 》, 386页pdf
专知会员服务
151+阅读 · 2019年10月12日
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
【哈佛大学商学院课程Fall 2019】机器学习可解释性
专知会员服务
103+阅读 · 2019年10月9日
相关资讯
微软全力拥抱 Java !
CSDN
0+阅读 · 2022年9月7日
VCIP 2022 Call for Demos
CCF多媒体专委会
1+阅读 · 2022年6月6日
Hierarchically Structured Meta-learning
CreateAMind
26+阅读 · 2019年5月22日
深度自进化聚类:Deep Self-Evolution Clustering
我爱读PAMI
15+阅读 · 2019年4月13日
A Technical Overview of AI & ML in 2018 & Trends for 2019
待字闺中
16+阅读 · 2018年12月24日
笔记 | Sentiment Analysis
黑龙江大学自然语言处理实验室
10+阅读 · 2018年5月6日
Reinforcement Learning: An Introduction 2018第二版 500页
CreateAMind
11+阅读 · 2018年4月27日
相关基金
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2013年12月31日
国家自然科学基金
1+阅读 · 2013年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2012年12月31日
国家自然科学基金
0+阅读 · 2011年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
国家自然科学基金
0+阅读 · 2009年12月31日
Top
微信扫码咨询专知VIP会员