在prolog中翻译(列表1、列表2)

在prolog中翻译(列表1、列表2),prolog,visual-prolog,Prolog,Visual Prolog,我在尝试一个函子翻译([3,5,1,3],[3,5,1,3]),它执行打印数字的操作。我这样执行时收到一个奇怪的警告 35?-翻译([1,2,3],[a,b,c])。 错误:写入/2:流“a”不存在 domains list1=integer* list2=symbol* 谓词 translate(list1,list2) means(integer,symbol) 条款 translate([],[]). translate([],_):- write("\nError in

我在尝试一个函子翻译([3,5,1,3],[3,5,1,3]),它执行打印数字的操作。我这样执行时收到一个奇怪的警告

35?-翻译([1,2,3],[a,b,c])。 错误:写入/2:流“a”不存在

domains

list1=integer*
list2=symbol*
谓词

translate(list1,list2)
means(integer,symbol)
条款

translate([],[]).

translate([],_):-
    write("\nError in Input").

translate(_,[]):-
    write("\nError in Input").

translate([Head1|Tail1],[Head2|Tail2]):-
    write(Head2," = "),
    means(Head1,Name),
    write(Name,"\n"),
    translate(Tail1,Tail2).


means(0,zero).

means(1,one).

means(2,two).

means(3,three).

means(4,four).

means(5,five).

means(6,six).

means(7,seven).

means(8,eight).

means(9,nine).
到底是什么问题?这是期望值

翻译([1,2,3],[a,b,c])

a=1 b=两个 c=3


变量需要大写:

translate([1,2,3],[A,B,C]).
当您输入
翻译([Head1 | Tail1],[Head2 | Tail2])
子句时,
a
Head2
相结合,然后您尝试满足
write(Head2,“=”
,即
write(a,“=”

write/2
将流作为第一个参数,并将第二个参数写入该流

假设您想要使用—如果您想要输出—类似

writef('Head2 = %w', [Head2])

(我从中获得了格式设置。)

在这种情况下我需要打印。我得到了这个错误,133?-翻译([0,1],“0”,“1”)。Head2=122错误:写入/2:域错误:
流\u或\u别名“应为,找到了”
[122101114111]“134?-我的writef/2调用错误;我已经相应地更新了我的答案。我确实重新标记为
visualprolog
,因为我认为这就是这里使用的内容(因为有域和域)