С профилем Prolog можно легко ознакомиться с помощью consult/1
или [filename].
.Консультирование с атомом
Предположим, что я генерирую код Пролога как атом. Я могу в предикате записать этот код в файл, а затем проконсультироваться с ним и запросить предикат из этого кода, например.
example :-
generate_stuff(X),
write_to_file(X,'filename.pl'),
consult('filename.pl'),
predicate_in_filename.
Как бы я идти о делать то же самое, но без написания X
(код) к файлу? Мне не повезло с assert
, который принимает термин как ввод, тогда как здесь у меня есть полный код в атоме.
'consult' утверждает термины, которые находятся в' filename.pl'. Вы можете написать предикат, который анализирует через 'X' и утверждает термины. Существует множество предикатов поддержки Prolog для извлечения терминов. Непонятно, как вы структурировали или использовали 'generate_stuff/1' в целом, но для' generate_stuff 'более разумно было бы утверждать термины по мере их создания, а не собирать их как гигантскую строку и анализировать через них потом , – lurker
@lurker Есть ли какой-либо предикат, который анализирует 'X' на термины? 'read_term_from_atom/3' только анализирует первый, и для меня было бы громоздкой переписывать то, что отделяет члены в атоме. – Fatalize
Если вы структурируете свой код, чтобы создать свой «материал» как одну большую строку (которую я рекомендую против, если это возможно), ознакомьтесь с прологом SWI [Чтение и запись в терминах] (http://www.swi-prolog.org/pldoc/man? section = termrw) предикаты. Подумайте о настройке 'X' как потока, а не файла. – lurker