我已经瞥了一眼Prolog,这是我第一次尝试写它:它直接在我第一次查询时出错。 (在下面的示例中,我要求单词('test')。)
我打算说:
这是我上市时的知识库。在SWI-Prolog控制台中。
?- listing.
word(A) :-
alias(A, B).
word('A').
word('C').
word('D').
alias(A, B) :-
alias(B, A).
alias('A', 'B').
Yes
3 ?- word('test').
ERROR: Out of local stack
Exception: (59,743) alias(_L147, test) ?
我知道我的知识基础出了什么问题?
答案 0 :(得分:2)
alias(A, B) :-
alias(B, A).
alias('A', 'B').
这是一个无限循环。
例如,如果您调用alias(2,4)
,那么跟踪将类似于:
alias(2,4)
alias(4,2)
alias(2,4)
alias(4,2)
alias(2,4)
alias(4,2)
alias(2,4)
alias(4,2)
....
答案 1 :(得分:1)