Differences From Artifact [a39b25f2bef916f0]:
- File
index.dd
- 2010-11-27 23:46:51 - part of checkin [576c494e53] on branch trunk - fixed: literal "..." is now lifted in user-defined layers (user: kinaba) [annotate]
To Artifact [c411cf72312ff15e]:
- File
index.dd
- 2010-11-30 02:23:19 - part of checkin [32e5c4ef44] on branch trunk - documentation update (user: kinaba) [annotate]
484 484 <p>
485 485 パターンマッチ失敗時と、"..." という式を実行したときと、再帰が無限に止まらなくなったとき、
486 486 には、Polemy のコードは実行時エラーで終了します……<tt>@value</tt> レイヤならば。
487 487 </p>
488 488 <p>
489 489 ユーザー定義レイヤでは、このような時にも実行時エラーにならず、
490 490 「$(RED $(B ボトム))」という特別な値がリフト関数に渡されます。
491 +(ボトムのリフトに失敗した時は、この再帰停止処理は行われません。無限ループします。)
491 492 組み込みの <tt>_isbot</tt> 関数で、ボトムかどうか判定できます。
492 493 </p>
493 494 <p>
494 495 「再帰が無限に止まらなくなったとき」は、
495 496 ある引数で呼び出された関数が、return するよりも前にまた同じ引数で呼び出されたら、
496 497 ループしていると見なすことで判定しています。
497 498 これを判定する実装の副作用として、ユーザー定義のレイヤでは、関数は全てメモ化されています。