| ||||||||||
| MINERVA superseeded IF/Prolog.
Please see
http://www.ifcomputer.co.jp/MINERVA
for details.
We discontinued to sell IF/Prolog Dec 31. 2003. Dedicated technical support for IF/Prolog ended Dec 31 2008. This site is maintained as a community service only. repeat/0は、常に成功する組み込み述語です。"fail"の後、IF/Prologは最後に成功した節までバックトラックをして戻り、別の解を満たそうと試みます。repeatが手続き中で最後に成功した節であった場合には、その結果として"無限個の解"を持つことになり、バックトラックが無限に繰り返されることになります。repeatは、次の様な節で定義されたように動きます。 repeat. repeat :- repeat. repeat/0によって起こったル−プから脱け出るには、それに続く節が成功するか(1番目の例)、あるいはカット'!'が実行されなければなりません(2番目の例)。そうすれば、repeatでのバックトラック点が削除されます。もちろんル−プは、例外処理が起きた場合にも止まります(3番目の例)。 ?- write('>'), repeat, get(C), ( [C] == "q" ; write('>'), fail). >w >y >q yes ?- [user]. | go :- repeat, | write('>'), read(W), | ( atomic_length(W,4),!, fail ; fail ). | end_of_file. yes ?- go. >red. >qwertyuiop. >stop. no ?- go. >a(b). E X C E P T I O N:atom_expected:atomic_length(a(b),4) ?- _ | ||||||||||
|
| Back> |
|