如何调用在 Prolog 中附加两个列表的谓词?

How to call a predicate that appends two lists in Prolog?

我到处都看到这样的东西:append([1,2,3],[a,b,c],appended)., 但是如果我有 2 个列表:ok([1,2,3]).hello([a,b,c]). 并且我想将 okhello 附加在一起。

为什么 append(ok,hello,appended). 不起作用?

如果列表已经定义,我将如何做到这一点而不必手动输入每个元素?

您首先查询列表,然后附加它们:

ok( OK), hello( Hello), append( OK, Hello, Appended).

Prolog 的逻辑变量名称必须以大写字母开头。

如果您只想查看 Appended 报告的查询结果,请尝试

ok( _OK), hello( _Hello), append( _OK, _Hello, Appended).

正如 Enigmativity 的评论中所建议的那样,另一种不那么骇人听闻的方法是为此定义一个特殊用途的谓词,

appended( Appended) :-
  ok( OK), hello( Hello), append( OK, Hello, Appended).