Prolog 将列表作为用户的输入,并在其他谓词中使用它,如append,以及其他一些我想要实现代码的谓词
代码的输出为:Prolog 将列表作为用户的输入,并在其他谓词中使用它,如append,以及其他一些我想要实现代码的谓词,prolog,Prolog,代码的输出为: test():- write("list1"), read(A), write("list2"), read(B), write(A), write(B). append([],X,X). append([X|Y],Z,[X|W]) :- append(Y,Z,W).' 但是我希望它像普通的字母表一样。这个read谓词是用来阅读术语的。对于读取字符串,请改用read\u string。read谓词用于读取术语。对于读取字符
test():-
write("list1"),
read(A),
write("list2"),
read(B),
write(A),
write(B).
append([],X,X).
append([X|Y],Z,[X|W]) :- append(Y,Z,W).'
但是我希望它像普通的字母表一样。这个
read
谓词是用来阅读术语的。对于读取字符串,请改用read\u string
。read
谓词用于读取术语。对于读取字符串,请使用read\u string
。您正在读取术语,这意味着您要求用户在终端上输入Prolog,这意味着您在写入[A,B,C]时。
,Prolog将其解释为三个未实例化变量的列表。这不是编码问题,如果您输入[a,b,c].
或[a','b','c'].
它将按照您的预期工作。正如@ValeraGrishin在下面所说的,如果你想要原始字符串,你必须使用read_string/3
,但是如果你真的想要Prolog术语,你必须正确地转义大写原子。你在读术语,这意味着你要求用户在终端上输入Prolog,这意味着当你写[A,B,C]时,Prolog将其解释为三个未实例化变量的列表。这不是编码问题,如果您输入[a,b,c].
或[a','b','c'].
它将按照您的预期工作。正如@ValeraGrishin在下面所述,如果您想要原始字符串,您必须使用read_string/3
,但是如果您确实想要Prolog术语,您必须正确地转义大写原子。
?- test().
list1[A,B,C].
list2|: [D,E].
[_3842,_3848,_3854][_3866,_3872]
true.