IF Computer > IF/Prolog > Manuals > IF/Prolog V4.1 マニュアル > IF/Prolog V4.1 レファレンスマニュアル > # repeat

# repeat

IF/Prolog by Siemens
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) ?- _

document: http://www.ifcomputer.co.jp/IFProlog/Manuals/v4.1/reference/repeat/print_en.html
published 2012/5/21 update 1995/11/6 (c) 1996-2009 IF Computer Japan
IF Computer 5-28-2 Sendagi, Bunkyo-ku Tel +81-3-5814-3352 start (AT) ifcomputer.com
Customer Support Tokyo 113-0022 Japan   http://www.ifcomputer.com
Back> managed with ubiCMS