为什么我的谓词会返回prolog中的列表列表?

时间:2017-11-24 16:28:00

标签: list prolog

所以我有这个谓词应该返回一个元素列表。但它不断返回列表列表,我不知道为什么。

english2133t([],[]).
english2133t([H|T], [R|E]):-
    translate([H],R), english2133t(T,E).

translate只是一个迷你数据库

translate("a", "4").
translate("b", "b").
translate("c", "<").
translate("c", "k").
translate("d", "|>").
translate("e", "3").
translate("f", "ph").
translate("g", "g").
translate("g", "9").
translate("h", "h").
translate("i", "1").
translate("j", "j").
translate("k", "|").
translate("l", "1").
translate("m", "/\\/\\").
translate("n", "/\\/").
translate("o", "0").
translate("p", "p").
translate("q", "q").
translate("r", "r").
translate("s", "5").
translate("t", "7").
translate("t", "+").

1 个答案:

答案 0 :(得分:3)

正如您将H括在列表中以统一字符代码一样,您需要使用[R],以便返回的字符代码列表与列表统一:

english2133t([],[]).
english2133t([H|T], [R|E]):-
    translate([H],[R]), english2133t(T,E).