Prolog 中谓词的返回值
Returning value of the predicate in 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
。
现在我的结果只是 true/false,但我想得到 RES = T/N
.
可能吗?
谢谢
当检查成功时,return RES 第二个参数等于 true
main_pred(List, true) :-
sort(List, SortedList),
check(SortedList), !.
main_pred(List, false).
否则return 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-如果是有序的,returns RES=true
,否则RES=false
.
注:我注释了sort,因为如果我们使用它,那么它总是return 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
我是 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
。
现在我的结果只是 true/false,但我想得到 RES = T/N
.
可能吗? 谢谢
当检查成功时,return RES 第二个参数等于 true
main_pred(List, true) :-
sort(List, SortedList),
check(SortedList), !.
main_pred(List, false).
否则return 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-如果是有序的,returns RES=true
,否则RES=false
.
注:我注释了sort,因为如果我们使用它,那么它总是return 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