如何解决在序言中学习的任务?
How to solve task to study in prolog?
我有任务要学习Prolog
Y=.(.(1,[],.(2,.(a,.(b,[])))).
什么是Y
?
如何解决?
你有错别字。 .
是一个二元函子——它必须始终只有两个参数。此外,=
和 .
之间必须有一个 space,因为它们在这里用作两个不同的运算符,而不是一个运算符:
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
被实例化为一个值——在这里,复合术语显然描述了一个列表。
我有任务要学习Prolog
Y=.(.(1,[],.(2,.(a,.(b,[])))).
什么是Y
?
如何解决?
你有错别字。 .
是一个二元函子——它必须始终只有两个参数。此外,=
和 .
之间必须有一个 space,因为它们在这里用作两个不同的运算符,而不是一个运算符:
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
被实例化为一个值——在这里,复合术语显然描述了一个列表。