繁体   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