| |||||||||||
| MINERVAは、内蔵述語やユーザ定義述語を関数型で評価をするための2つの 内蔵述語を提供します。
is/2 算術式評価 <-/2 関数評価 関数でのプログラミングは、同等の述語を使う場合よりも 書き込み・読み込みともに容易な場合があります。 最後の引数に値を返す述語を使って、 以下のように算術関数を定義することができます。
somearithmetic(Arg1,...,ArgN,Result)そして、その関数を関係型で以下のように呼び出すことも可能ですし、 ?- somearithmetic(Arg1,...,ArgN,Result)表記型で以下のように呼び出すことも可能です。 ?- Result is somearithmetic(Arg1,...,ArgN). 最後の引数に値を返す述語を使って、一般的な関数を定義することができます。
Predicate(Arg1,...,ArgN,Result)そして、その関数を関係型で以下のように呼び出すことも可能ですし、 ?- Predicate(Arg1,...,ArgN,Result)表記型で以下のように呼び出すことも可能です。 ?- Result <- Predicate(Arg1,...,ArgN). <-/2 の動きは
Res <- Goal :-
Goal =.. [Name|Args],
append(Args,[Res],XtArgs),
XtGoal =.. [Name|XtArgs],
call(XtGoal).
の様に記述できますが、is/2 および <-/2はどちらも、
効率的に実装されたMINERVAの内蔵述語です。
以下は、古典的なPrologを使った例です。 List <- append([a,b,c],[d,e,f]) 以下は、MINERVAオブジェクトを使った例です。 Counter <- create_counter(10), Index <- Counter::next, ... | |||||||||||
| |||||||||||
| 戻る> |
|