Loading
述語
述語は、ADPの評価単位になります。以下のように記述します。
述語名(
引数リスト)
引数リストが空の場合、()と記述することもできますが、省略して
述語名
と記載することもできます。述語名は、英字か_(アンダーバー)または!(カット)か =(関数形式)で始まる必要があります。
述語名は名前空間をサポートしています。
名前空間::
述語名と記述します。
名前空間を指定した場合は、指定された名前空間の述語のみユニフィケーションの対象となります。
名前空間を指定しない場合は、全ての名前空間の述語がユニフィケーションの対象となります。
組込み述語は名前空間 sys で定義されています。
関数形式
ADPでは、述語の引数リストで最後の引数は、戻り値として扱うことができます。
式の中に述語を記載すると、関数形式とみなされ引数の最後は戻り値として扱われます。
以下に例を示します。
・例1(functionform.p) 関数形式(1)
+pi(3.14);
,$s = 2 * 2 * pi
,printn($s);
・実行例
D:\sample>adp functionform.p
12.560000
これは以下の構文と同様になります。
・例2(functionform2.p)
+pi(3.14);
,pi($p)
,$s = 2 * 2 * $p
,printn($s);
述語の引数リスト内に、さらに述語を入れるとこちらは述語の入れ子とみなされる。
通常の言語では、A関数の引数にB関数を記述するとB関数の戻り値がA関数に渡されるが、
ADPの場合は、述語そのものが渡される。
・例3(functionform3.p) 関数形式とみなされない例
+pi(3.14);
,printn(pi); #3.14が出力されないで、piという述語そのものを表示しようとする
・実行例
D:\sample>adp functionform3.p
・例4(functionform4.p) 述語の引数リストに関数の戻り値を渡す場合
+pi(3.14);
,printn( =pi); #3.14が出力される
・実行例
D:\sample>adp functionform4.p
3.140000
=は述語を関数としてみなす接頭辞になります。式の先頭や述語の引数リスト内で述語を関数として扱い戻り値を引数とする場合は、=を述語の先頭に付与します。
Powered by ADP.