Я пытаюсь сделать invert/2
. Я хочу, чтобы он игнорировал порядок своих аргументов, так что вам не нужно беспокоиться о том, какая половина инверсии является той, которую вы знаете, и чтобы вам не приходилось повторять себя, указав инверсии как факты. Я в настоящее времяКак сделать правило неудачным, не доказав, что что-то ложно?
invert(Left, Right) :-
call_with_depth_limit(invert(Right, Left), 1, Result),
Result \= depth_limit_exceeded.
в качестве первого invert
правила. Это в основном работает, но если invert(a, b).
, то ?- invert(b, X).
дает как X = a
, так и false
, что совсем не то, что я хочу.
Не инвертирует (A, B): - инвертирует (B, A),! .' работает? – Enigmativity
@Enigmativity 'ERROR: Out of local stack' – Viko
@lurker. Тогда почему он не отображается в конце списка результатов каждого запроса? – Viko