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 <p> 484 <p>
485 パターンマッチ失敗時と、"..." という式を実行したときと、再帰が無限に止まらなくなったとき、 485 パターンマッチ失敗時と、"..." という式を実行したときと、再帰が無限に止まらなくなったとき、
486 には、Polemy のコードは実行時エラーで終了します……<tt>@value</tt> レイヤならば。 486 には、Polemy のコードは実行時エラーで終了します……<tt>@value</tt> レイヤならば。
487 </p> 487 </p>
488 <p> 488 <p>
489 ユーザー定義レイヤでは、このような時にも実行時エラーにならず、 489 ユーザー定義レイヤでは、このような時にも実行時エラーにならず、
490 「$(RED $(B ボトム))」という特別な値がリフト関数に渡されます。 490 「$(RED $(B ボトム))」という特別な値がリフト関数に渡されます。
> 491 (ボトムのリフトに失敗した時は、この再帰停止処理は行れません。無限ループします。)
491 組み込みの <tt>_isbot</tt> 関数で、ボトムかどうか判定できます。 492 組み込みの <tt>_isbot</tt> 関数で、ボトムかどうか判定できます。
492 </p> 493 </p>
493 <p> 494 <p>
494 「再帰が無限に止まらなくなったとき」は、 495 「再帰が無限に止まらなくなったとき」は、
495 ある引数で呼び出された関数が、return するよりも前にまた同じ引数で呼び出されたら、 496 ある引数で呼び出された関数が、return するよりも前にまた同じ引数で呼び出されたら、
496 ループしていると見なすことで判定しています。 497 ループしていると見なすことで判定しています。
497 これを判定する実装の副作用として、ユーザー定義のレイヤでは、関数は全てメモ化されています。 498 これを判定する実装の副作用として、ユーザー定義のレイヤでは、関数は全てメモ化されています。