プログラミング言語理論では、インラインブロックとファンクションブロック、何が違うのですか?
スタックフレームに関連するブロックは2種類あります。インラインブロックおよびファンクションブロック。
インラインブロックとファンクションブロックの違いは何ですか?
そして、次のようなコードがあるとします。
int x = 1;
g(z) = z + x;
インラインブロックによれば、関数gは変数xにネストされていますか?
プログラミング言語理論では、インラインブロックとファンクションブロック、何が違うのですか?
スタックフレームに関連するブロックは2種類あります。インラインブロックおよびファンクションブロック。
インラインブロックとファンクションブロックの違いは何ですか?
そして、次のようなコードがあるとします。
int x = 1;
g(z) = z + x;
インラインブロックによれば、関数gは変数xにネストされていますか?
機能ブロック:
void func(){...}; // CまたはC++
中(defunのFUNC ...)// CLISPで
楽しいFUNC()= ... // mlの
にファンクションブロックはラップブロックです関数。
Cでは、関数が復帰すると、関数のアクティベーションレコードがスタックから削除されます。
しかし、ML、CLISPなどの関数型言語では、関数の戻り値は必ずしもスタックフレームの削除を意味しません。
この機能は後で使用できるためです。
インラインブロックは、ネストされた構造を示すブロックです。
int x = 1;
g(z) = z + x;
関数gは、インラインブロックを使用する場合、関数gだけ関数gの活性化レコードを使用して、xの値を知らない1と関数gを変数xをとります。しかし、関数gがxの値を知ることができる理由は、静的リンクを使用し、静的リンクが最も近いネスティングブロックを指すことです。
ファンクションブロックとインラインブロックの違いは、ファンクションブロックがスタックフレームから常に削除されないことです。