Как преобразовать список чисел в список слов в прологе?

Я пытаюсь написать программу 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

Но, когда я делаю

translate([1,2], X).

Я получил:

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

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

1 ответ

Решение

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

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

Другие вопросы по тегам