2013-04-28 63 views
1

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

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

其中newlist是一个函数调用返回1N之间的名单?

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

回答

0

在Prolog中,你并没有真正具有返回值的函数。你有统一变量的谓词。考虑到这一点,你会写是这样的:

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

虽这么说,想想range基本条件,然后找出你如何构建上做一个谓语产生的整个范围数字。

0

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

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

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