1

基本上我正在解决一个更大的问题,但是我如何将列表从 1 返回到一个数字n?我对此很陌生,有点困惑。另外,是否可以在函数调用中将其作为参数传递?

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

返回和newlist之间的列表的函数调用在哪里?1N

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

4

2 回答 2

0

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

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

main :-
  check(numlist, 10),
  ...
于 2013-04-28T05:39:02.783 回答
0

在 Prolog 中,您实际上并没有返回值的函数。您有统一变量的谓词。考虑到这一点,您将编写如下内容:

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

话虽如此,请考虑基本条件,range然后弄清楚如何在此基础上构建谓词以产生整个数字范围。

于 2013-04-28T00:23:04.370 回答