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