我正在尝试编写一些谓词来解决以下任务(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)
但是我得到了错误:编译时出现“非法开学”。有什么建议么?
最后一行的最后一个括号应为方括号。
另外,您可能想利用Prolog的模式匹配:
listtran([], []).
listtran([First|T], [Mean|EngT]):-
tran(First, Mean),
listtran(T, EngT).
Run Code Online (Sandbox Code Playgroud)