On 07/12/2013 08:51 AM, John Cowan wrote: > Ray Dillinger scripsit: > >> On floating point numbers it would make sense (to me anyway) to return -0.0 >> in the case of a comparison of +0 and -0, and return NaN in the case of any >> comparison involving NaNs. > > In this context, that would mean returning one of five values: > > return 1 when A > B > > return 0 when A = B, unless one is 0.0 and the other is -0.0 > > return -0.0 when one is 0.0 and the other is -0.0 > > return -1 when A < B > > return +nan.0 when A is NaN or B is NaN > > This seems extremely irregular. > I think that a comparator returns one of three conceptual results: less-than, equal, or greater-than. There is a long history of using the integer values -1, 0, and +1 to represent those concepts. However these concepts are not really integers, and using integers to represent them may be a red herring. I think Haskell gets this right by yielding one of the algebraic constructors LT, EQ, or GT ( http://www.haskell.org/ghc/docs/latest/html/libraries/base/Prelude.html#t:Ordering ). Perhaps Scheme comparators should return one of the symbols 'less 'equal or 'greater ? Or perhaps we should standardize enumerated types first and then have comparators return an enum object. Kevin Wortman
Attachment:
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Scheme-reports mailing list Scheme-reports@x http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports