用户可见的主要数据结构(列表,数组,映射,集合等)是否在Clojure或Haskell中是不可变的,是否存在任何“微型”VM(对于任何编程语言)?
“微小”是指一个虚拟机,其实现简单,简洁和便携是关键点:想想Lua或TinyScheme。
答案 0 :(得分:1)
我不确定它与您的关键点"如何对齐,但您可能会看一下Pixie。 Pixie在RPython中实现了一个VM。它的一个主张是编译的VM +标准库只有10MB以上的小占用空间。这种语言是基于lcp(松散地)在Clojure上。它似乎在默认情况下保持Clojure的不可变策略,并且肯定有Clojure的持久数据类型的实现。
答案 1 :(得分:1)
A"纯功能方案"。 VM是1600行C。
Owl Lisp是Scheme的纯功能方言。它是基于 适用的R7RS标准子集,主要用线程扩展 和纯功能操作所必需的数据结构。猫头鹰可以 可用于大多数类UNIX系统,例如Linux,BSD和OS X. 程序通常通过C编译为独立的二进制文件,因此Owl 不需要运行用它编写的程序。
Owl项目最初是为了扩展R5RS而开始的 具有一些必要功能的方案,例如线程和模块,以及 作为纯粹功能如何影响运行时的实验 和使用纯粹功能性语言的应用程序。而 已经将一些东西添加到Scheme中,Owl试图保留核心语言 尽可能简单。
实施方面的目标是获得一个小型便携式系统 可以用来轻松发送程序。这是目前完成的 通过使用基于寄存器的小型虚拟机,可以进行扩展 使用特定于程序的指令来减少解释开销。
针对C的Clojure编程语言的编译器 作为后端。它基于ClojureScript ......在你可以运行之前 任何东西都要确保你有GLib 2和Boehm-Demers-Weiser垃圾 收藏家安装。
TinyClojure是一个构建小型,易于嵌入的版本的项目 可移植C ++中的Clojure / ClojureScript。在很多方面,这是我的 尝试创建一个与TinyScheme相当的Clojure。
...
ClojureC很好,但构建过程很复杂,而且 有外部库依赖... TinyClojure开发的重点是使它成为最简单的方法 在任何应用程序中嵌入Clojure。微小的Clojure由一个组成 头文件,一个源文件,没有外部依赖项,以及 扩展和嵌入界面尽可能简单 是