Prolog中的开学时间非法

Mei*_*eir 4 prolog

我正在尝试编写一些谓词来解决以下任务(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).
Run Code Online (Sandbox Code Playgroud)

写一个谓词listtran(G,E),它将德语数字单词列表转换为相应的英语数字单词列表。例如:

listtran([eins,neun,zwei],X).
Run Code Online (Sandbox Code Playgroud)

应该给:

X = [one,nine,two].
Run Code Online (Sandbox Code Playgroud)

我写过:

listtran(G,E):- G=[], E=[].  
listtran(G,E):- G=[First|T], tran(First, Mean), listtran(T, Eng), E = [Mean|Eng).
Run Code Online (Sandbox Code Playgroud)

但是我得到了错误:编译时出现“非法开学”。有什么建议么?

Max*_*keh 5

最后一行的最后一个括号应为方括号。

另外,您可能想利用Prolog的模式匹配:

listtran([], []).
listtran([First|T], [Mean|EngT]):-
   tran(First, Mean),
   listtran(T, EngT).
Run Code Online (Sandbox Code Playgroud)