ゴールを一度だけ成功させる。
!/0 (Cut) は、一度だけ成功する。探索木の未探査枝は刈り取られる。
もし、Cut がゴールの一部なら、 そのゴールの全選択点は除かれる。全バインディングは固定される。
もし、Cut が、右側(たいてい、本体の最初)にあると、完全なゴールは一度だけ成功する。
Cut の使用は、repeat/0 でのループを作る時にも重要である。なぜなら、!/0 は、ループを抜けた後、このループは バックトラックによって、再訪されない。
!/0 を使うと、プログラムは理解しにくくなる。よって、Cut
はできるだけ使うべきではない。
データベースには、以下のようになっているものとする。:
colour(blue).
colour(red).
colour(yellow).
clothing(blouse).
clothing(trousers).
clothing(socks).
| colour(X),!. | X <- blue の代入で一度だけ成功。 |
| clothing(X),!,colour(Y). | 以下の代入で 3度成功。 X <- blouse, Y <- blue. X <- blouse, Y <- red. X <- blouse, Y <- yellow. |
この述語は、ISO-Prolog標準に含まれる。
| 冒頭へ |
|