我正在阅读教程,我发现很难理解如何递归单个列表。有人能给我一个快速解释基本情况必须是什么,为什么,以及在递归中做什么。我的代码是:
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之后。如果它符合其中一条规则,那就是真的。目前我只是确保我可以让类型实例化工作。欢迎任何帮助!提前谢谢。
答案 0 :(得分:1)
中缺少一对方括号
statement(A|B)
应该是
statement([A|B])
你的递归规则的其余部分看起来很好。