我正在尝试编写一个谓词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])不满意。我被困了一天;有人可以给我一些提示吗?