当我输入时,请输入以下代码:
?- Tuple = ((2, 4), (2, 4)).
它说:
Tuple = ((2, 4), 2, 4).
但我想要它说:
Tuple = ((2, 4), (2, 4)).
我怎样才能做到这一点?
答案 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))
之间没有歧义。