1
我正在使用SWI Prolog,並且驚訝地發現在Prolog中沒有這樣做的明顯方法。我所追求的是與第2章類似的東西,但允許沒有實際意義的第一個參數(並且特定於給定文件中的子句,即我不想要整個Prolog庫!)。這裏是我寫的所有條款如何獲得在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).
有沒有更簡潔的方法呢?
請注意,大多數Prolog系統只允許您在動態謂詞中使用'clause/2'。在最近SWI-Prolog版本的特定情況下,只要'protect_static_code'標誌設置爲'false',就可以在靜態謂詞中使用'clause/2'。 –