2013-04-28 103 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), 
    ...