GHCの設計は、「スパインレス、タグレスGマシン」の略であるSTGと呼ばれるものに基づいています。
現在、G-machineは、怠惰の実装方法を定義する「グラフ還元マシン」の略です。評価されていないサンクは式ツリーとして保存され、プログラムを実行するには、これらを通常の形式に縮小する必要があります。(ツリーは非巡回グラフですが、Haskellの広範な再帰は、Haskell式が一般的なグラフを形成することを意味します。したがって、ツリー削減ではなくグラフ削減になります。)
あまり明確ではないのは、「スパインレス」と「タグレス」という用語です。
「スパインレス」とは、関数適用に関数アプリケーションノードの「スパイン」がないことを指していると思います。代わりに、呼び出された関数に名前を付け、そのすべての引数を指すオブジェクトがあります。あれは正しいですか?
「タグレス」とは、コンストラクターノードがコンストラクターIDで「タグ付け」されていないことを指し、代わりに大文字小文字の表現はジャンプ命令を使用して解決されると思いました。しかし、今はそれが正しいかどうかわかりません。代わりに、ノードが評価状態でタグ付けされていないという事実を参照しているようです。誰かがこれらの解釈のどれが正しいか(もしあれば)を明確にすることができますか?