SICStus Prolog には、ゴールを展開するためのフックがあります。goal_expansion/6
これは、コンパイル時と実行時の両方でメタ呼び出し中に呼び出されます。これらの呼び出しは、かなりの実行時オーバーヘッドを引き起こし、メタ呼び出しを遅くします。私の拡張の目的は最適化のみです。したがって、意味的には、ゴールと拡張ゴールは同等です。
実行時にそのような呼び出しを無効にするにはどうすればよいですか?
(私には少し粗雑に見えるものを廃止する必要があるようです。軽量の再コンパイルgoal_expansion/6
も妨げられます)。