Директива gprolog include не работает

Я использую gprolog версии 1.4.2 на компьютере с Fedora 17 Linux.

Я написал небольшую прологическую программу, которая отлично работает. В нем я определил несколько предикатов, которые я хочу использовать в других пролог-программах. Поэтому я решил поместить их в отдельный файл и использовать include директива (определена в разделе 7.1.8 версии 1.4.2 руководства по GNU Prolog). Однако это не сработало. gprolog сказал, что эти предикаты (которые были во включенном файле) были неопределенными.

Поэтому в приглашении gprolog я набираю:

| ?- include('tools.pro').

И я получаю:

uncaught exception: error(existence_error(procedure,include/1),top_level/0

Так что он явно не признает директиву. Я искал все и не могу найти причину, почему это должно произойти. Есть мысли по этому поводу?

2 ответа

Решение

Как указано в стандарте ISO Prolog, include/1 это директива, а не предикат. GNU Prolog следует официальному стандарту, поэтому вы не можете использовать include/1 в качестве предиката, в том числе в запросе верхнего уровня. Как объяснил Сергей, если вы хотите загружать свои программы, вы можете использовать встроенный предикат consult/1 или его ярлык ([Fie1, File, ...]).

Чтобы использовать директиву include/1 в ваших исходных файлах, запишите ее перед (:-)/1 оператор. Например:

:- include('tools.pro').

include/1 для использования в исходных файлах Prolog.

В строке запроса вы, вероятно, просто хотите обратиться к исходному файлу: ['tools.pro'].

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