我正在使用in/1
谓词尝试约束一个整数以从某个集合中获取值:
?- use_module(library(clpfd)).
gen_in_set(X) :-
X in [0, 1, 3, 5, 7].
我没想到这会起作用,因为[...]
是列表符号。我当然可以使用:
X #= 0 #\/ X #= 1 #\/ X #= 3 #\/ X #= 5 #\/ X #= 7.
但这非常冗长。以下也有效:
X in 0 \/ 1 \/ 3 \/ 5 \/ 7.
并且有点短,但仍然很丑。
该文档指出:
Var 是 Domain 的一个元素。域是以下之一:
仅由整数组成的整数单例集。
我试过搜索什么是单例集(Prolog newbie here),但我在网上找不到任何东西。有没有更简洁的方式来表达我的约束?