Как получить все пункты, определенные / загруженные из файла в Прологе
Я использую SWI Prolog и удивлен, что не нашел очевидного способа сделать это в Prolog. То, что мне нужно, это что-то похожее на предложение /2, но допускает необоснованный первый аргумент (и относится только к предложениям в данном файле, т. Е. Мне не нужна вся библиотека Prolog!). Вот что я написал, чтобы найти все пункты
clauseX(H,B) :-
current_predicate(P/Arity),
functor(H,P,Arity),
absolute_file_name('filname.pl', AbsFileName),
predicate_property(H, file(AbsFileName)),
clause(H,B).
Есть ли более краткий способ сделать это?
1 ответ
Итак, я смог несколько сократить его, первые два литерала не требуются, это вернет пункты в файле filename.pl
clauseX(H,B) :-
absolute_file_name('filname.pl', AbsFileName),
predicate_property(H, file(AbsFileName)),
clause(H,B).
Однако я все еще обеспокоен эффективностью этого и должен ли он обращаться к файлу каждый раз, когда вызывается clauseX