Я не могу сделать из этого никакого смысла: если я даю Prolog reverse([], A).
, он отлично работает, если даю reverse(A, []).
и отвечать ;
на первый предложение это зависает!Prolog: reverse ([], A) vs reverse (A, [])
Почему? (Тот же результат как для GNU Prolog и SICStus Пролог!)
[email protected]:~$ prolog
GNU Prolog 1.3.0
By Daniel Diaz
Copyright (C) 1999-2007 Daniel Diaz
| ?- reverse([], A).
A = []
yes
| ?- reverse(A, []).
A = [] ? ;
Fatal Error: global stack overflow (size: 32768 Kb,
environment variable used: GLOBALSZ)
[email protected]:~$
Я знаю, что это несколько лет, но только для обновления: это зафиксировано в более поздней версии 'gprolog'. Я запускаю версию 1.4.2, и поведение обратных действий точно так же, как говорится в их руководстве. Оба случая успешно инициализируют 'A'' '[]'. – lurker