1

在Clojure或Haskell中,用戶可見的主要數據結構(列表,數組,地圖,集合等)的主數據結構是不可變的嗎?是否有任何「微小」VM(對於任何編程語言)? 「微小」我的意思是一個VM,其實現簡單,簡潔和可移植性是關鍵點:認爲Lua或TinyScheme。基於不可變數據結構的微型虛擬機?

回答

1

我不確定它如何與您的「關鍵點」保持一致,但您可以看看Pixie。 Pixie在RPython中實現了一個虛擬機。其中一個要求是編譯的VM +標準庫僅佔用10MB以上的空間。該語言是Clojure基於Lisp的(鬆散)Lisp。它似乎保持Clojure默認的不可變的策略,並且肯定會實現Clojure的持久數據類型。

+0

謝謝!看起來比Lua et.al重一點。但這可能是最好的競爭者。它絕對似乎有類似的「輕量級」理想。 – Lassi

1

貓頭鷹Lisp

「純粹功能的計劃」。虛擬機是1600行的C。

貓頭鷹Lisp是Scheme的一個純粹功能的方言。它基於R7RS標準的適用子集 ,主要用線程 和純功能操作所需的數據結構進行擴展。貓頭鷹 可用於大多數類UNIX系統,如Linux,BSD和OS X. 程序通常通過C編譯爲獨立的二進制文件,因此不需要使用Owl 來運行其中編寫的程序。

貓頭鷹項目最初開始了既作爲一種嘗試與一些必要的功能,如線程和模塊擴展R5RS 方案,並 關於如何成爲純功能影響運行時 和使用的應用性秩序的純粹的實驗功能語言。儘管 已添加到Scheme中,但Owl仍儘量保持核心語言 的簡單。

實現方式的目標是獲得一個小型便攜式系統,其中 可以用來輕鬆地發佈程序。目前通過使用基於寄存器的小型虛擬機來完成 ,該虛擬機可以使用程序特定的指令來擴展 以減少解釋開銷。

ClojureC

編譯器爲目標ç 作爲後端Clojure的編程語言。它基於ClojureScript ...在運行 之前,確保您已安裝GLib 2和Boehm-Demers-Weiser垃圾收集器 。

TinyClojure

TinyClojure是建立一個小的,容易嵌入 的Clojure/ClojureScript的便攜式C版++的項目。在很多方面,我的 試圖創建一個Clojure相當於TinyScheme。

...

ClojureC是好的,但在生成過程是複雜的, 有外部類庫的依賴與TinyClojure的發展重點是使其內的任何嵌入Clojure的最簡單的方法 應用。 Tiny Clojure包含一個 頭文件,一個源文件,沒有外部依賴關係,並且 擴展和嵌入接口儘可能簡單,因爲它可能是 。

相關問題