Prolog中谓词的返回值



我是prolog新手,我需要帮助理解返回值是如何工作的。我知道它要么是

pred(Y, X) :- X is Y. 

所以当输入

?- pred(5, X).

输出是:X = 5.

或当输入

?- pred(5,5).

我们得到:true .

现在我想从谓词中获得第一个输出,看起来像这样:

main_pred(List, RES) :-
sort(List, SortedList),
check(SortedList).

如果check(SortedList)为真,RES应为T;如果check(SortedList)为假,RES应为N。目前我的结果只是真/假,但我想得到RES = T/N

有可能吗?由于

当检查成功时,返回RES第二个参数等于true

main_pred(List, true) :-
sort(List, SortedList),
check(SortedList), !.    
main_pred(List, false).

否则返回RES=false。更直接:

main_pred(List, RES) :-
sort(List, SortedList),
(check(SortedList) -> RES=true; RES=false).

将true/false替换为您需要的值(T/N)。这是否回答了你的问题?

1-main_pred谓词接受一个列表([1,2,3]),检查它是否有序。

2 -如果是有序的,则返回RES=true,否则返回RES=false

注意:我已经注释了sort,因为如果我们使用它,那么它将始终返回RES=true

main_pred(List, RES) :-
%sort(List, SortedList),
(ordered(List)->
RES='true';
RES='false').
ordered([]) .
ordered([_]) .
ordered([X,Y|Z]) :- X =< Y , ordered( [Y|Z] ),!.

例子:

?-main_pred([1,3,5],Res).
Res = true
?-main_pred([1,4,2],Res).
Res = false

最新更新