我正在尝试一个仿函数翻译([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 =三
是
答案 0 :(得分:3)
变量必须是大写的:
translate([1,2,3],[A,B,C]).
当您输入translate([Head1|Tail1],[Head2|Tail2])
子句时,a
会与Head2
统一,然后您尝试满足write(Head2, "=")
write(a, "=")
。
write/2
将Stream作为第一个参数,并将第二个参数写入该流。
大概你想要使用 - 如果你想要输出 - 比如
writef('Head2 = %w', [Head2])
(我从here获得了格式。)