是否存在用户可见的主要数据结构(列表、数组、映射、集合等)的“微型”虚拟机(对于任何编程语言)是不变的,就像Clojure或Haskell一样?
我所说的“微型”指的是实现简单、简洁和可移植性是关键点的虚拟机:想想Lua或TinyScheme。
发布于 2016-10-04 16:07:30
我不确定它如何与您的“关键点”保持一致,但您可以看看Pixie。Pixie在RPython中实现了一个虚拟机。它的声明之一是编译的VM +标准库只占用10MB多一点的空间。该语言是一种(松散地)基于Clojure的lisp。默认情况下,它似乎保持了Clojure的不可变策略,并且肯定有Clojure的持久数据类型的实现。
发布于 2016-10-08 13:15:37
Owl Lisp
一个“纯粹的功能方案”。VM为1600行C。
Owl Lisp是一种纯函数式的方案方言。它基于R7RS标准的适用子集,主要使用纯函数操作所需的线程和数据结构对其进行扩展。Owl可以在大多数类UNIX系统上使用,如Linux、BSD和OS X。程序通常通过C编译为独立的二进制文件,因此不需要Owl来运行用它编写的程序。
Owl项目最初既是为了尝试用一些必要的特性来扩展R5RS方案,比如线程和模块,也是为了试验纯函数式如何影响应用顺序纯函数式语言的运行时和使用。虽然一些东西已经添加到Scheme中,但Owl试图保持核心语言尽可能简单。
在实现方面,我们的目标是获得一个小型的便携系统,可以用来轻松地发布程序。目前,这是通过使用基于寄存器的小型虚拟机来实现的,该虚拟机可以用特定于程序的指令来扩展,以减少解释开销。
ClojureC
面向C作为后端的
编程语言的Clojure编译器。它基于ClojureScript ..。在可以运行任何东西之前,请确保您已经安装了GLib 2和Boehm-Demers-Weiser垃圾收集器。
TinyClojure
TinyClojure是一个在可移植的C++中构建一个小型的、可轻松嵌入的Clojure/ClojureScript版本的项目。在很多方面,我都试图创建一个与TinyScheme等价的Clojure。
..。
ClojureC很好,但构建过程很复杂,而且存在外部库依赖...TinyClojure开发的重点是使其成为在任何应用程序中嵌入Clojure的最简单的方法。极小的Clojure由一个头文件、一个源文件组成,没有外部依赖项,并且扩展和嵌入接口尽可能简单。
https://stackoverflow.com/questions/39820761
复制相似问题