SWI-Prolog:以 C = A ∪ B 的形式编写谓词 union(A,B,C)

SWI-Prolog: Write predicate union(A,B,C) in form C = A ∪ B

是他们在 SWI-Prolog 中使用以下形式 C = A ∪ B 编写具有三个变量的谓词的某种方式,例如 union(A,B,C)。对于具有两个变量的谓词,我知道它们是执行此操作的运算符,但我不确定它们在那种情况下是否类似。

没有

不直接。 Prolog 仅支持定义一元运算符(prefix/suffix 运算符,例如 -- 3232 ++,它们都对应于 '--'/1'++'/1)和中缀运算符(例如 X is Y 对应于 is/2).

如果您查看运算符定义和优先级,您需要将联合运算符定义为优先级小于 700 的中缀运算符。

然后,阅读像 x = y ∪ z 这样的术语会产生 '='( x , '∪'(y,z) )

另一种方法是写一个 DCG (definite clause grammar) to parse the text as desired. See this tutorial: https://www.metalevel.at/prolog/dcg