如何在Prolog中按字面意思(作为元组)阅读括号?

时间:2014-04-26 22:35:58

标签: prolog

当我输入时,请输入以下代码:

?- Tuple = ((2, 4), (2, 4)).

它说:

Tuple = ((2, 4), 2, 4).

但我想要它说:

Tuple = ((2, 4), (2, 4)).

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:3)

将逗号运算符视为制作“元组”通常不是一个好主意。对(如您的示例中)仍然可以,但正如您所注意到的,语法可能会令人困惑,因为它隐藏了结构:(1,(2,3))(1,2,3)相同,与1,2,3相同

一旦你尝试制作三胞胎,就会遇到麻烦,因为(1,2,3)与嵌套对(1,(2,3))无法区分。这当然是因为它真的嵌套对,而不是扁平结构。

使用特定的仿函数是更好的风格,比方说t/N。然后t(1,2,3)t(1,t(2,3))之间没有歧义。