Как преобразовать список чисел в список слов в прологе? - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь написать программу Prolog так, чтобы при наличии списка чисел, подобных [1, 2, 3], он преобразовывал их в список слов, представляющих эти числа ['one', 'two', 'three'].

Пока мой код:

totext(0, 'zero').
totext(1, 'one').
totext(2, 'two').
totext(3, 'three').
totext(4, 'four').
totext(5, 'five').
totext(6, 'six').
totext(7, 'seven').
totext(8, 'eight').
totext(9, 'nine').

translate([], []).
translate([Head|Rest], [TranslatedHead|TranslatedRest]) :-
   totext(Head, TranslatedHead),
   translate(Rest, TranslatedRest).

Когда я загружаю gprolog и проверяю файл, если я делаю:

translate([], X).

Я правильно получаю:

X = []
yes

Но когда яdo

translate([1,2], X).

Я получаю:

uncaught exception: error(existence_error(procedure,totext/0),translate/0)

Я очень плохо знаком с Прологом (это моя первая программа на Прологе), и я понятия не имею, что здесь происходит не так.Есть идеи?Спасибо.

1 Ответ

0 голосов
/ 22 февраля 2019

Ваш код исправлен, но ваша сборка GNU Prolog не работает.Перекомпиляция GNU Prolog из источников должна это исправить.Распространенным признаком поломки сборки GNU Prolog являются ошибки существования предикатов, когда предикаты, всегда сообщаемые как имеющие нулевой арентность, обычно не существуют в вызываемом коде.

PS Кажется, что произошла поломка установок GNU Prologобычно при использовании Ubuntu.Можете ли вы подтвердить, что это тоже ваше дело?

...