如何在prolog中递归单个列表?

时间:2012-05-01 01:09:20

标签: recursion prolog

我正在阅读教程,我发现很难理解如何递归单个列表。有人能给我一个快速解释基本情况必须是什么,为什么,以及在递归中做什么。我的代码是:

type(string).

type(int).

instance(X,Y):- X, Y.

variable(_).

statement([]).

statement(A|B):- A, statement(B).

代码的目的是制作一个轻型检查器来检查这样的事情:

String s; int i; i = s.length();

我将此作为测试传递:

statement([instance(type(string), variable(s))]).

我决定把它放在一个列表中并递归它,然后把它放在if之后。如果它符合其中一条规则,那就是真的。目前我只是确保我可以让类型实例化工作。欢迎任何帮助!提前谢谢。

1 个答案:

答案 0 :(得分:1)

中缺少一对方括号
statement(A|B)

应该是

statement([A|B])

你的递归规则的其余部分看起来很好。