ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.4002827 Prologのカット
質問者:garusu head :- goala,!, goalb.
head :- goalc.
とソース上あったとしてカットはどういう働きをするんでしょうか?

goala(true)->goalb(fail)->????
goala(fail)->?????
困り度:
  • すぐに回答を!
質問投稿日時:
08/05/06 22:22
この質問に対する回答は締め切られました。

回答

ANo.1 一番簡単にはカットを取って、実行(トレース)を比べてみれば良いのでは?

カットは「枝刈り」ですね。カットを超えてしまうと、fail してもバックトラックがおきません。

トレースにもありますが、goala が成功してしまうと、goalb が失敗しても goalc が呼ばれません。もしカットがなければ goalb が失敗するとバックトラックが発生して goalc が呼ばれるハズです。
回答者:chirubou
種類:回答
どんな人:一般人
自信:参考意見
回答日時:
08/05/06 22:28
この回答へのお礼この回答にお礼をつける(質問者のみ)