Prolog,返回列表从1到N.

时间:2013-04-28 00:03:15

标签: prolog

基本上我正在处理一个更大的问题,但是如何将列表从1返回到数字n?我是新手,有点困惑。是否可以将其作为函数调用中的参数传递?

喜欢check(newlist(1, N), [L | Rl]);

其中newlist是一个函数调用,它返回1N之间的列表?

对不起我的术语是关闭的。这似乎是一个非常基本的问题,但我仍在学习并理解Prolog的概念。

2 个答案:

答案 0 :(得分:0)

在Prolog中,您实际上没有返回值的函数。你有谓词统一变量。考虑到这一点,你会写这样的东西:

range(1, N, ResultOfRange),
check(ResultOfRange, [L, Rl]).

话虽如此,请考虑range的基本条件,然后弄清楚如何构建它以使谓词产生一系列数字。

答案 1 :(得分:0)

检查您的Prolog库。例如,在SWI-Prolog中有numlist / 3。假设被调用者将通过call / N调用谓词,您可以按名称传递谓词。

check(ListBuilder, N) :-
  call(ListBuilder, 1, N, L),
  ...

main :-
  check(numlist, 10),
  ...