返回
Heapless Functional Programming
DOI:10.1007/978-3-031-99751-8_4.png)
摘要
En 中文
类型化函数式编程语言(如Haskell和OCaml)在运行时大量使用堆内存。这使得它们在很大程度上不适合系统编程,因为系统编程中资源有限且程序通常需要在裸机上运行。本文展示了如何将一种(稍加限制的)高级纯函数式语言编译为完全不使用堆的机器代码。尽管通常需要堆内存,但诸如高阶函数、多态和类型类等特性均由表层语言支持。这是通过部分求值[12]实现的:通过在编译时仔细简化程序,我们可以完全消除这些高级特性,得到一个可以轻松编译为基于栈的机器代码的剩余程序。本文描述了该部分求值器的运行机制,论证了其设计合理性,并介绍了一种新型类型系统,该系统可确保部分求值器始终成功移除所有使用堆的特性。
Keyword:
functional programming
partial evaluation
heap-free compilation
type system
stack-based code

