在prolog中翻译(列表1、列表2)
我在尝试一个函子翻译([3,5,1,3],[3,5,1,3]),它执行打印数字的操作。我这样执行时收到一个奇怪的警告 35?-翻译([1,2,3],[a,b,c])。 错误:写入/2:流“a”不存在在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
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
,因为我认为这就是这里使用的内容(因为有域和域)