Prologは append/3 を書くには最高で、後は悪くなる一方だと云った人が居るとか居ないとか。しかし中核的な原理である単一化は極めて強力な計算機構なので、実のところほとんどの事が簡単に書けてしまう(むしろ簡単過ぎて解決した気にならない)のである。Haskellで云うun-curryingやC++で云う変数バインドはこんな具合である。
% bind/3
bind(C1, ARGS, C2) :- C1 =.. [F|R], append(R, ARGS, L), C2 =.. [F|L].
plus(X, Y, Z) :- Z is X + Y.
?- bind(plus(1), [2, X], C), call(C).
X = 3,
C = plus(1, 2, 3).
記述さえ存在すれば、それはパターンマッチによって自由に変換出来る。Prologが新しい言語を作るための言語であると謂われる所以である。
0 件のコメント:
コメントを投稿