我正在尝试编写一些谓词来解决以下任务(learnprolognow.com)
假设我们获得了以下事实的知识库:
tran(eins,one).
tran(zwei,two).
tran(drei,three).
tran(vier,four).
tran(fuenf,five).
tran(sechs,six).
tran(sieben,seven).
tran(acht,eight).
tran(neun,nine).
编写一个谓词listtran(G,E),它将德语数字单词列表翻译成相应的英语数字单词列表。例如:
listtran([eins,neun,zwei],X).
应该给:
X = [one,nine,two].
我写过:
listtran(G,E):- G=[], E=[].
listtran(G,E):- G=[First|T], tran(First, Mean), listtran(T, Eng), E = [Mean|Eng).
但是我在编译时得到错误:“非法开始学期”。有什么建议吗?
答案 0 :(得分:4)
最后一行中的最后一个括号应为正方形。
另外,您可能想要使用Prolog的模式匹配:
listtran([], []).
listtran([First|T], [Mean|EngT]):-
tran(First, Mean),
listtran(T, EngT).