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(追加)。
。只需打印附加的
。