次のように除算演算子を実装します。Aは12div6div2結果は次のとおりです。A=4
したがって、タイプyfxに属する中置演算子を作成する必要があると思います。この演算子は、最初に6 div 2を計算し、次に12 div result(6 div 2)を計算する必要があるためです。
説明を明確にしたいと思います...概念を手続き的に説明したことは知っていますが、引数に対して実行される操作の優先順位を他にどのように表現するかがわかりませんでした...
さて、私は(私は願っていますが)yfx形式の演算子が正しいと思います...
問題は、この演算子を説明する方法がわからないことです。
前の演習では、次のように演算子を定義しました。
op(600,xfx,has).
/* perter has information */
has(peter, information).
Ivan Bratkoの本で読むことができるように:
オペレーター定義は、操作またはアクションを指定しません。原則として、操作やデータはオペレーターに関連付けられていません。
ですから、計算を行う演算子を定義することはできないと思います。
ですから、私の運動の解決策は次のようなものになると思います。
op(600,yfx,div).
div(X div Y, Division) :- Division is X/Y.
しかし、うまく機能しないでください。さらに、これは彼らが私に実装を求めているということではないと思います。