簡體   English   中英

Prolog:數字列表

[英]Prolog: list of numbers

如何生成從1到N的數字列表,其中N> = 0?

謂詞:數字(N,L)。

?-­ numbers(5,X).

X = [1, 2, 3, 4, 5].

?­- numbers(0,X).

X = [].

使用內置的numlist/3

?- numlist(1, 5, L).
L = [1, 2, 3, 4, 5].

?- numlist(1, 0, L).
false.

在SWI-Prolog中,您可以使用listing(numlist)來查看它是如何實現的。

請注意, numlist/3永遠不會生成空列表。 如果你想要,那么你需要編寫一個將失敗映射到空列表的簡單包裝器。

您可以使用between生成到端點between整數,然后findall將它們收集在一起。 試試這個謂詞 -

numbers(Count, List) :-
    findall(N, between(1,Count,N), List).

如果你給Count任何<= 0,則在失敗之前,這個謂詞將生成空列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM