機能停止とは、高次プログラムを1次プログラムに変換するプログラム変換です。アイデアは、プログラムが与えられた場合、有限数のラムダ抽象化があるため、各ラムダをIDで置き換え、各関数アプリケーションをそのIDで分岐する適用プロシージャの呼び出しで置き換えることができるということです。これは関数型言語のコンパイラーで使用されることもあり ますが、その適用性は、機能停止がプログラム全体の変換であるという事実によって制限されるため(プログラム内のすべての関数を静的に知る必要があります)、プログラム全体のコンパイラーのみがそれ。
ただし、PottierとGauthierには、GADTを含むより洗練された型付けを使用した、多相型型の非機能化アルゴリズムがあります。エンコードが指定されると、タグではないが高次関数を含むラムダデータ型にキャッチオールケースを追加することができます。つまり、モジュールごとにエンコードを使用して機能を無効にすることができるはずです。
誰かがこれをやったことがあり、このアイデアを使用しているコンパイラを指し示していますか?(おもちゃのコンパイラは大丈夫であり、実際に推奨されます。)