PrologでまったりPart 2
■ このスレッドは過去ログ倉庫に格納されています
0266デフォルトの名無しさん
2005/08/31(水) 18:18:04からくり人形水準の話です。
Prologはバックトラックを制御に組み込みました。しかし
バックトラックが働くのは論理的に偽なった時で、一方、
再帰述語は真になった時のみ意味を持ちます。
非決定性の述語として定義されるデータベース、たとえば
身長(彩,160).
身長(未来,165).
身長(あゆ,157).
から[[彩,160],[未来,165],[あゆ,157]]というリストを
得たいとします。
このデータを収集するのに再帰的述語で一旦真になり、
得た[彩,160]をfailしてしかもリストに保持することは
不可能です。しかし、ここが初心者にとっては解りにくいのです。
それで、再帰的述語でありながら、バックトラックして
その機能を発揮する特異な述語repeatを出発点として
それに定義節を挿入したり、引数を与えたりしながら
何とか上記のリストを得ようと努力させます。これは
当然徒労に終わるのですが、この問題に苦闘することで、
なぜ、不可能なのかを一気に理解させようという試みでした。
残念ながら当時のテキストを読み返すとこのような企みが
あったとは思えない踏み込み不足の講義だったようです。
でも着眼としては面白いと思うのでそのうち機会があったら
やり直してみたいですね。
■ このスレッドは過去ログ倉庫に格納されています