On Fri, Oct 20, 2017 at 1:22 AM, Jonathan Hull <jh...@gbis.com> wrote:
> +1 for trapping unless using &==. In the case of ‘Float?’ we could also > map to nil. > > This is probably a more appropriate discussion for evolution though... > > > On Oct 19, 2017, at 9:48 PM, Brent Royal-Gordon via swift-dev < > swift-dev@swift.org> wrote: > > On Oct 19, 2017, at 4:29 PM, Xiaodi Wu via swift-dev <swift-dev@swift.org> > wrote: > > D) Must floating-point IEEE-compliant equivalence be spelled `==`? > > In my view, this is something open for debate. I see no reason why it > cannot be migrated to `&==` if it were felt that `==` *must* be a full > equivalence relation. I believe this is controversial, however. > > > I actually got partway through writing up a pitch on this yesterday, but > my opinion is that NaNs are so exceptional, and so prone to misuse, that we > ought to treat them like integer arithmetic overflows: trap when they're > detected, unless you use an `&` variant operator which indicates you know > what you're doing. > > I strongly suspect that, in practice, most float-manipulating code is not > prepared to handle NaN and will not do anything sensible in its presence. > For example, Apple platforms use floating-point types for geometry, color > components, GPS locations, etc. Very little of this code will do anything > sensible in the presence of a NaN. Arguably, it'd be better to exclude them > through the type system, but I don't think that's a realistic > possibility—we would need to have done that in a more source-break-friendly > era. But that doesn't have to mean we're completely stuck. > > Built-in floating point operators, as well as libc/libm math functions, are designed to propagate NaN correctly. This is not meant to be a thread about NaN, and we need to be cautious to define the scope of the problem to be solved from the outset. The tendency of having ever-expanding discussion where issues such as method names turn into discussions about the entire standard library go nowhere. The question here is about `==` specifically and how to accommodate partial equivalence relations. For sanity, we start with the premise that NaN will forever be as it is.
_______________________________________________ swift-dev mailing list swift-dev@swift.org https://lists.swift.org/mailman/listinfo/swift-dev