op(+優先順位,+演算子分類,+演算子リスト) # current_op(-優先順位,-演算子分類,-演算子)
優先順位は、1-1200の整数です。大きい数字ほど優先順位は低くなります。
演算子分類は、アトム xf,yf,fy,fx,yfx,xfx,xfyのいずれかです。
演算子あるいは演算子リストは、オペレ−タ自身を表す記号(アトム)です。 op/3は、オペレ−タのリストも引き受けます。
op/3は、演算子リスト、あるいはリストである演算子リストの各要素を指定された型の演算子分類と優先順位を持つオペレ−タとして定義します。
引数に正しい値が与えられない場合には、例外処理が引き起こされます。
新しいオペレータの定義が以前のものと矛盾する場合には、op/3は失敗します。
current_op/3はその引数を、定義された各オペレ−タのパラメタに生成時とは逆の順序で単一化します。
その引数に値を与えるかどうかは任意です。
?- [user]. | :- op( 250, xfy, '#'). | a '#' b. | end_of_file.
yes ?- findall( Op, current_op( 250, _ , Op ), AllOps).
Op = _632 AllOps = [(^),(#)]
yes ?- _
integer_expected 優先順位が整数でない out_of_range 優先順位が1-1200の整数でない operator_type_expected 演算子分類はyfx, xfy, xfx, fy, fxのいずれかでなければならない list_expected 演算子リストはアトムあるいはリストでなければならない(引用符が必要かもしれません)。