1

我正在尝试一个函子 translate([3,5,1,3],[three,five,one,three]) 来执行打印数字的操作。像这样执行时我收到一个奇怪的警告,

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 = 一 b = 二 c = 三

是的

4

1 回答 1

3

变量需要大写:

translate([1,2,3],[A,B,C]).

输入translate([Head1|Tail1],[Head2|Tail2])子句时,a与 统一Head2,然后尝试满足write(Head2, "="),即write(a, "=")

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

大概你想使用 - 如果你想要输出 - 像

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

(我从这里得到了格式。)

于 2011-09-14T18:56:14.033 回答