Recursion 如何在prolog中递归单个列表?
我正在阅读一篇教程,我发现很难理解如何递归单个列表。有人能给我一个快速的解释,基本情况必须是什么,为什么,以及在递归中做什么。我的代码是:Recursion 如何在prolog中递归单个列表?,recursion,prolog,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(); 我通过这
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后面。如果它符合其中一条规则,它就是真的。目前,我只是想确保类型实例化能够正常工作。欢迎任何帮助!提前感谢。您缺少一对方括号
statement(A|B)
应该是
statement([A|B])
递归规则的其余部分看起来不错。中缺少一对方括号
statement(A|B)
应该是
statement([A|B])
递归规则的其余部分看起来不错。基本情况应该是列表与
[]
统一。至于“在递归中执行”,你真的可以在Prolog中选择吗?我的意思是,我在使用swiprolog,他肯定希望我们使用它。但是如何将列表与[]统一?您编写了一个与头尾规则([H | T]):-…
统一的规则,以及另一个与空列表规则([]):-…
统一的规则。我这样做了,但它给了我一个错误。我要发布我的代码。请告诉我如何更正。您在语句(a | B)
中缺少一对方括号:它应该是语句([a | B])
。在规则中单独使用A
也没有意义。基本情况应该是列表与[]
统一。至于“在递归中执行”,你真的可以在Prolog中选择吗?我的意思是,我在使用swiprolog,他肯定希望我们使用它。但是如何将列表与[]统一?您编写了一个与头尾规则([H | T]):-…
统一的规则,以及另一个与空列表规则([]):-…
统一的规则。我这样做了,但它给了我一个错误。我要发布我的代码。请告诉我如何更正。您在语句(a | B)
中缺少一对方括号:它应该是语句([a | B])
。在规则中单独使用A
也是没有意义的。语句([])到底是什么意思。实际上是什么意思?他们是怎么统一的?这是否等同于说[]=[]?语句([])到底是什么意思。实际上是什么意思?他们是怎么统一的?这是否等同于说[]=[]?