fixedpoint.jp - R7RS's infinite NaN




R7RS's infinite NaN

R7RS-smallの仕様に準拠した実装で(infinite? z)(nan? z)の両方とも#tを返すことがあり得ます。例えば+inf.0+nan.0iのようなcomplex numberを扱える実装ではそうなるはずです。

R6RSでは、上記の2つの手続きの引数はreal numberに限って定義されていたため、そのようなケースはありませんでした。実装はどのように拡張しても構いませんでした。しかしR7RSの場合は、(and (infinite? a) (nan? b))#tとなるreal number aおよびbが存在する実装でcomplex numberをサポートするなら、必ず(let ((c0 (make-rectangular a b)) (c1 (make-rectangular b a))) (and (infinite? c0) (nan? c0) (infinite? c1) (nan? c1)))#tでなければなりません。

参考:


© 2006-2016 fixedpoint.jp