我正在尝试编写一个谓词is_multi(M)
,定义为:
- 的每个元素都
M
具有 的形式X / N
,其中X
是一个原子,并且N
是一个大于 0 的整数; M
不包含具有相同原子的两个元素,为什么is_multi([]). is_multi([a / 2, b / 2]).
很满意,但是
is_multi([a, b/2]). is_multi([a/0, b/2]). is_multi([a/2, 2/4]) is_multi([a/2, b/3, a/2]) is_multi([a/3, b/-4, c/1])
不是。
这是我到目前为止所写的:
is_multi(M) :- M = [].
is_multi(M) :-
M = [Head|Tail],
Head = X/N,
integer(N),
N > 0,
is_multi(Tail).
但是如果具有相同的原子,它不会比较两个元素。例如,is_multi([a/2, a/3])
不满意。我被困了一天;有人可以给我一些提示吗?