如何 "return" 序言中的两个值
How to "return" two values in prolog
我有两个函数,第一个计算列表中有多少负元素,第二个用负元素索引形成列表。我需要编写一个名为 goal_negative_positions 的函数,它将“return”两个值。我的版本不起作用,它总是 return 错误。怎么改正?
negative_count([], 0):-!.
negative_count([Head|Tail], Count):-
Head >= 0, !,
negative_count(Tail, Count).
negative_count([_Head|Tail], Count):-
negative_count(Tail, TailCount),
Count is TailCount + 1.
negative_positions([], _, []):-!.
negative_positions([Head|Tail], CurPos, Positions):-
NextPos is CurPos + 1, (
Head >= 0, !,
negative_positions(Tail, NextPos, Positions);
negative_positions(Tail, NextPos, TailPositions),
Positions = [NextPos|TailPositions]
).
goal_negative_positions([], [], 0).
goal_negative_positions(Start, Result, count):-
negative_count(Start, count),
negative_positions(Start, -1, Result).
goal_negative_positions
的最后一个定义有问题。 count
参数应以大写字母开头:
goal_negative_positions(Start, Result, Count):-
negative_count(Start, Count),
negative_positions(Start, -1, Result).
在以小写字母 a 开头的 prolog 参数中,工作方式类似于常量。在您的情况下,如果 negative_count(Start, Count)
Count
等于 count
.
,则 goal_negative_positions(Start, Result, count)
将为真
我有两个函数,第一个计算列表中有多少负元素,第二个用负元素索引形成列表。我需要编写一个名为 goal_negative_positions 的函数,它将“return”两个值。我的版本不起作用,它总是 return 错误。怎么改正?
negative_count([], 0):-!.
negative_count([Head|Tail], Count):-
Head >= 0, !,
negative_count(Tail, Count).
negative_count([_Head|Tail], Count):-
negative_count(Tail, TailCount),
Count is TailCount + 1.
negative_positions([], _, []):-!.
negative_positions([Head|Tail], CurPos, Positions):-
NextPos is CurPos + 1, (
Head >= 0, !,
negative_positions(Tail, NextPos, Positions);
negative_positions(Tail, NextPos, TailPositions),
Positions = [NextPos|TailPositions]
).
goal_negative_positions([], [], 0).
goal_negative_positions(Start, Result, count):-
negative_count(Start, count),
negative_positions(Start, -1, Result).
goal_negative_positions
的最后一个定义有问题。 count
参数应以大写字母开头:
goal_negative_positions(Start, Result, Count):-
negative_count(Start, Count),
negative_positions(Start, -1, Result).
在以小写字母 a 开头的 prolog 参数中,工作方式类似于常量。在您的情况下,如果 negative_count(Start, Count)
Count
等于 count
.
goal_negative_positions(Start, Result, count)
将为真