如何生成从 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
永远不会生成空列表。如果需要,那么您需要编写一个简单的包装器,将失败映射到一个空列表。
关于list - 序言:数字列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7432156/