【发布时间】:2015-03-14 13:16:29
【问题描述】:
我正在学习逻辑编程的基础知识。 我解决了一些练习,现在我无法创建一个带有两个参数的函数,一个非空列表的列表,其元素连接在一起形成第二个参数。
当我创建一个连接列表列表元素的函数时:
concat([[]|L],L3):- concat(L,L3).
concat([[Head|L1]|L2],[Head|L3]):- concat([L1|L2],L3),!.
现在,我需要知道的是如何获取该函数的返回值并将其与列表(函数的第二个参数)进行比较。
【问题讨论】:
-
Prolog 没有带有返回值的函数。 Prolog 有 predicates 来定义其参数之间的 relations。有点不清楚您要的是什么。
-
如果
L是[]会发生什么? -
concat([],[])。但我认为没有必要,因为我用 ! 打破了递归。
-
递归消除了解决方案。它不添加它们。而且它不能替代适当的终端案例,因为该案例必须自行成功。
concat([[]], L)的结果应该是什么?当你在你的程序中尝试它是什么? -
在我的程序中应该是假的,因为第一个参数不能是空列表的列表。如果我在我的程序中尝试它是 L=[ ]