Незаконное начало срока в прологе - PullRequest
4 голосов
/ 11 февраля 2010

Я пытаюсь написать некоторые предикаты для решения следующей задачи (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).

Но я получаю ошибку: "незаконное начало срока" при компиляции. Есть предложения?

1 Ответ

4 голосов
/ 11 февраля 2010

Последняя скобка в вашей последней строке должна быть квадратной.

Кроме того, вы можете использовать сопоставление с образцом Пролога:

listtran([], []).
listtran([First|T], [Mean|EngT]):-
   tran(First, Mean),
   listtran(T, EngT).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...