yes, we *are* putting floats in the type system. and `Foo<NaN>` *is* a different type from `Foo<NaN>`
@joe using same-type constraints on Foo<NaN> causes a compile-time exception
@steve and at runtime, it Just Works as a type inequality 🤌🏻
@steve @joe this is why I build the compiler with -ffast-math
@steve @joe only if it’s a signaling NaN, no?