description on Wikipediaで案内されているC#でsimulator of the SECD machineと書いています。基本的な操作は完了しましたが、rap
命令の実装方法がわかりません。SECDマシンでは「ラップ」はどのように機能しますか?
ラップが可能再帰関数
そして用を作り、それが現在のものとダミー環境の発生を置き換えるだけで、APのように動作します:それはおよそrap
が言うウィキペディアで
ap
と書かれています。
apは、クロージャとスタックからのパラメータ値のリストをポップします。クロージャは、現在の環境として環境をインストールし、パラメータリストをその前にプッシュし、スタックをクリアし、Cをクロージャの関数ポインタに設定することによって、パラメータに適用されます。 S、E、およびCの次の値の以前の値はダンプに保存されます。ここで
List
はLispのスタイル "短所" は、細胞の私の実装であることをap
public void ap()
{
Push(S, ref D);
Push(E, ref D);
Push(C, ref D);
List closure = Pop(ref S);
List paramlist = Pop(ref S);
E = closure.Tail;
Push(paramlist, ref E);
C = closure.Head;
S = List.Nil;
}
注意の私の実装です。
私が混乱しているのは、rap
がap
とどのように違うのですか?たとえば、環境レジスタ(E)には何が起こりますか?私はWikipediaの定義が少し曖昧で、それをうまく説明できるものは何も見つかりませんでした。