0
我使用findall获得了一个特定的列表,然后想要计算它中的元素数量。由于findall在Prolog中不工作而引起的计数列表大小
即
huntingbreeds(List) :-
findall(Breedname, breed(Breedname,_,hunting), List).
这从我的数据库[小猎犬,巴塞特]返回猎狗的需求列表。
但现在,如果我尝试使用我的新谓词算什么?
list_length([] , 0).
list_length([_|Xs] , L) :-
list_length(Xs,N) ,
L is N+1 .
与我的查询 - list_length(huntingbreeds(列表),计数)。
这只是返回false。
我想我可能需要使用ARG即
?- list_length(arg(1,huntingbreeds(List),L), Count).
但再次返回false。 任何人都知道我可以如何获得名单大小?我知道list_length工作,如果我给它的功能:
?- list_length([1,2,3], Count).
我得到 计数= 3
但就是不知道如何通过它查找结果我的名单。我曾尝试将完整的findall语句替换为huntingbreeds(List)
,但仍然没有任何结果。
感谢您的建议,但我必须创建具有2个参数是list_length断言:list_length(列表,算),但您的评论帮助我创造了它是这样的: List_And_Count(L,Count): - huntingbreeds(L),list_length(L,Count)。 – ildsarria
很高兴帮助! – coder