我有一项在Prolog学习的任务
Y=.(.(1,[],.(2,.(a,.(b,[])))).
什么是Y
?
怎么解决?
答案 0 :(得分:2)
你有错别字。 .
是一个二元仿函数 - 它必须始终只有两个参数。此外,=
和.
之间必须有空格,因为它们在此处用作两个不同的运算符,而不是一个运算符:
Y=.(.(1,[] , .(2, .(a, .(b,[])))).
Y=.(.(1,[]), .(2, .(a, .(b,[])))).
------- -------
-------------
-------------------
测试:
2 ?- Y = .( .(1,[]), .(2, .(a, .(b,[])))).
Y = [[1], 2, a, b].
Y
是一个逻辑变量。你不解决它,Prolog确实如此。 =/2
performs a unification,结果,在这里,逻辑变量Y
被实例化了一个值 - 这里,复合词用于描述,显然是一个列表。