1

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

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 之后。如果它符合其中一条规则,那就是真的。目前我只是确保我可以让类型实例化工作。欢迎任何帮助!提前致谢。

4

1 回答 1

1

您缺少一对方括号

statement(A|B)

它应该是

statement([A|B])

递归规则的其余部分看起来不错。

于 2012-05-01T02:19:56.087 回答