В SICStus Prolog есть хук для расширения цели: goal_expansion/6
, который вызывается как во время компиляции, так и во время выполнения во время метавызова. Эти вызовы влекут за собой значительные накладные расходы во время выполнения, что замедляет метавызов. Целью моего расширения является только оптимизация. Таким образом, семантически цели и расширенные цели эквивалентны.
Как я могу отключить такие вызовы во время выполнения?
(Кажется, мне придется отменить goal_expansion/6
, что мне кажется немного грубым. Это также помешало бы перекомпиляция).