我的第一个prolog小程序不起作用

时间:2012-01-22 22:28:50

标签: prolog

我已经瞥了一眼Prolog,这是我第一次尝试写它:它直接在我第一次查询时出错。 (在下面的示例中,我要求单词('test')。)

我打算说:

  • word / 1
  • alias / 2
  • 别名是可交换的
  • 如果变量是另一个变量的别名,那么它就是一个单词
  • A,C和D是单词
  • B是A的别名。

这是我上市时的知识库。在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) ?

我知道我的知识基础出了什么问题?

2 个答案:

答案 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)