【发布时间】:2021-11-28 14:21:43
【问题描述】:
我想写一个谓词,它接受一个元组的成员,那个元组,并输出元组的另一个成员。你可以假设元组总是有 2 个元素,并且提供的成员总是存在的。
extract_from_tuple(_, [], _).
extract_from_tuple(X, [H|T], R) :-
( X \= H -> R is X, ! ; X = H -> extract_from_tuple(X, T, R) ).
我尝试实现在How to write IF ELSE conditions in Prolog 上找到的简单 if-else 语句语法。
例如,
extract_from_tuple(a, [b,a], R).
应该在结果变量R中输出b
其他方式也应该如此:
extract_from_tuple(a, [a,b], R).
只有这一次它“应该”点击 else 语句并递归调用谓词与供应列表的另一个元素。
【问题讨论】:
-
除了公认的答案:千万不要使用像
[a, b]这样的符号来表示元组。这是列表符号。如果您不明确区分列表和元组,您只会感到困惑。编写此类对的常用方法是(a, b)、a-b或pair(a, b)。