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

List 如何在Prolog中调用附加两个列表的谓词?,list,prolog,append,call,predicate,List,Prolog,Append,Call,Predicate,我到处看到这样的东西:append([1,2,3],[a,b,c],append)。,, 但是如果我有两个列表:ok([1,2,3])。和hello([a,b,c])。我想将ok和hello附加在一起 为什么append(好的,您好,append)。不起作用 如果已经定义了列表,我如何在不必手动键入每个元素的情况下执行此操作?首先查询列表,然后附加它们: ok(ok),hello(hello),append(ok,hello,append)。 Prolog的逻辑变量名称必须以大写字母开头 如果

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

为什么
append(好的,您好,append)。
不起作用


如果已经定义了列表,我如何在不必手动键入每个元素的情况下执行此操作?

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

ok(ok),hello(hello),append(ok,hello,append)。
Prolog的逻辑变量名称必须以大写字母开头

如果只想查看作为查询结果的附加的,请尝试

ok(\u ok)、hello(\u hello)、append(\u ok、\u hello、append)。
另一种不太老练的方法,正如在的评论中所建议的,是为它定义一个特殊用途的谓词

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

为什么希望
append(好的,您好,append)
起作用
append(X,Y,Z)
只需将列表
X
Y
附加到列表
Z
…好吧,我想把结果称为不同的东西,所以我想把它称为append,它是ok和hello附加在一起的。如何在不必键入每个元素的情况下进行测试?是否通过执行
member(OK,追加)。
其中OK是OK的一个元素?因为当我这样做的时候,它返回false。你写的和我显示的完全一样。试试
ok(ok)。
自己做。它有用吗?您声称它已经定义,所以应该可以工作。是吗?是的,这部分工作正常,那么
你好(hello)呢。
?它也应该起作用。那么,答案中显示的表达式也应该是。如果没有,请显示您的查询和得到的响应。请尝试
solve(追加):-ok(ok),hello(hello),append(ok,hello,append)。
然后查询
?-solve(追加)。
。只需打印附加的