ClojureやHaskellのように、ユーザに見える主なデータ構造(リスト、配列、マップ、セットなど)が不変である「小さな」VMがありますか?不変のデータ構造に基づく小さなVM?
"小さな"とは、実装の簡潔さ、簡潔さ、移植性が重要なポイントであるVMを意味します:LuaまたはTinySchemeと考える。
ClojureやHaskellのように、ユーザに見える主なデータ構造(リスト、配列、マップ、セットなど)が不変である「小さな」VMがありますか?不変のデータ構造に基づく小さなVM?
"小さな"とは、実装の簡潔さ、簡潔さ、移植性が重要なポイントであるVMを意味します:LuaまたはTinySchemeと考える。
私はそれがあなたの「キーポイント」とどのように釣り合っているのかは分かりませんが、Pixieをご覧ください。 PixieはRPythonでVMを実装しています。コンパイルされたVM +標準ライブラリのために、わずか10MBの小さなフットプリントしか存在しません。言語はClojureに基づく(ゆるやかな)リプスです。デフォルトではClojureのポリシーは不変であるとしており、Clojureの永続的なデータ型の実装は間違いありません。
「純粋に機能的なスキーム」。 VMはCの1600行です。
Owl LispはSchemeの純粋に機能的な方言です。これは主にスレッド と純粋に機能的な操作に必要なデータ構造で拡張された R7RS標準のサブセットに基づいています。 Owlは を、Linux、BSD、OS XなどのほとんどのUNIXライクなシステムで使用できます。 プログラムは通常、Cでスタンドアロンバイナリにコンパイルされるため、Owl はプログラムの実行には必要ありません。
フクロウのプロジェクトは、もともと純粋にApplicativeのための純粋に機能的な影響ランタイム と使用されてどのように実験などのスレッドやモジュールなど、いくつかの必要な機能、とR5RS スキームを拡張しようとすると、 の両方として始まった関数型言語です。 Schemeに というものが追加されましたが、Owlはコア言語 をできるだけ単純なものにしようとしています。
実装の目的は、簡単にプログラムを出荷するために が使用できる小型ポータブルシステムを得ることでした。現在のところ、小さなレジスタベースの仮想マシンを使用することで、 を拡張することができます。この仮想マシンは、プログラム固有の命令で拡張されて解釈可能なオーバーヘッドを減らすことができます。
コンパイラのバックエンドとしてC を標的Clojureのプログラミング言語のために。これはClojureScriptに基づいています... を実行する前に、GLib 2とBoehm-Demers-Weiserのごみ コレクタがインストールされていることを確認してください。
TinyClojureは、ポータブルC++の中のClojure/ClojureScriptの小さな、簡単に組み込み可能なバージョン を構築するためのプロジェクトです。多くの意味で、私は というTinySchemeのClojureに相当するものを作成しようとしています。
...
ClojureCは良いですが、ビルドプロセスは複雑であり、かつ は、外部ライブラリの依存関係があります... TinyClojureの開発に焦点がそれを任意の範囲内のClojureを埋め込むための最も簡単な方法 を作ることです応用。小さなClojureは、 ヘッダーファイルと1つのソースファイルで構成され、外部依存関係はなく、 拡張と埋め込みインターフェイスは、 と同じように簡単です。
ありがとう! Lua et.alよりかなり重いようです。これは最高の候補者かもしれません。間違いなく、同様の「軽量」な理想を持っているようです。 – Lassi