我试图写一个简单的翻译,在那里你输入数字号码的清单,并返回类似这样的字符串值:我的Prolog的“转换器”脚本返回一个空列表
翻译([1,2, 3],X)。 X = [一,二,三]。
我写的代码作品...除了它返回一个空的列表。这里是我的代码和跟踪:
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).
means(10, ten).
translate([], X).
translate([H|T], []):-
means(H, X),
translate(T, X).
translate([H|T], X):-
means(H, Y),
translate(T, [X|Y]).
[trace] 1 ?- translate([1,2,3], X).
Call: (6) translate([1, 2, 3], _G2219) ? creep
Call: (7) means(1, _G2301) ? creep
Exit: (7) means(1, one) ? creep
Call: (7) translate([2, 3], one) ? creep
Call: (8) means(2, _G2301) ? creep
Exit: (8) means(2, two) ? creep
Call: (8) translate([3], [one|two]) ? creep
Call: (9) means(3, _G2304) ? creep
Exit: (9) means(3, three) ? creep
Call: (9) translate([], [[one|two]|three]) ? creep
Exit: (9) translate([], [[one|two]|three]) ? creep
Exit: (8) translate([3], [one|two]) ? creep
Exit: (7) translate([2, 3], one) ? creep
Exit: (6) translate([1, 2, 3], []) ? creep
X = [] .
我的另一个问题是:为什么我的列表作为串联[一个|二] |三]?而不是[一,二,三]?
感谢,
彼得,你有任何改变想要删除这个问题吗?如果是这样,请出于定制原因举报主持人。我回滚了你的编辑,因为它可以被认为是针对你自己的帖子的破坏行为。 – bfavaretto 2013-02-28 03:29:17