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'を使用することができます。 –