计算由于查找在Prolog中不起作用而导致的列表大小



我使用 findall 获取一个特定的列表,然后想要计算其中的元素数量。

huntingbreeds(List) :-
findall(Breedname, breed(Breedname,_,hunting), List).

这会从我的数据库中返回猎犬的需求列表 [beagle, basset]。

但是现在,如果我尝试使用我的新谓词来计算它:

list_length([] , 0 ).
list_length([_|Xs] , L ) :- 
list_length(Xs,N) , 
L is N+1 .

使用我的查询 ?- list_length(狩猎品种(列表(,计数(。

这只会返回 false。

我想我可能需要使用 arg,即

?- list_length(arg(1,huntingbreeds(List),L), Count).

但它再次返回 false。 有人知道我如何获得列表大小吗?我知道函数list_length就像我给它一样工作:

?- list_length([1,2,3], Count).

我得到 计数 = 3。

但只是不知道如何从查找结果中传递我的列表。我尝试将完整的 findall 语句代替huntingbreeds(List)但这仍然没有任何作用。

你可以试试:

huntingbreeds(List),list_length(List, Count).

相关内容

  • 没有找到相关文章

最新更新