Hi there,

this is a kind of survey for general interest that could lead to several 
separate proposals — at least one would address a real-world problem with 
evident fatal consequences (or instead of proposals, we might end up with 
clever patterns to handle the problems better).

Right now, it's possible to do type-safe math with Swift, but afaics, it is 
impractical because the language lacks support for this.

Let's say I want to express the concepts of temperature and mass.
I can declare
let t: Float = 100.0
let m: Float = 1
and work with those — but the values are just plain numbers, and can be used in 
a way that makes no sense (addition of temperature and mass, for example)

We can't subclass structs like Float, and typealias has very limited use, 
because it's really just what it says: A new name without special features that 
can be used mutually interchangeable with the "real" type.

A first tiny step towards more safety would be empowering typealias and 
generate warnings when a function is used with the "wrong" parameter type 
("Kelvin" requested, but plain Float given).
Additionally, extensions written for a typealias shouldn't be treated like 
extensions for the underlying type.
An extra benefit of this would be the possibility to have
typealias Path = String
and make a clean distinction between general String-methods and those that are 
only relevant for Strings that represent a Path in the file system — it would 
even be possible to generate failable initializers to document constraints of 
the "new" type.

I know that issues because of wrong units are something the average 
iOS-developer seldom cares for, but as I said above:
Bugs that only could happen because of missing typesafety in calculations 
caused disasters that make memory leaks and race conditions look ridiculous 
trivial.

Originally, I planned to broaden the topic much more than I did, but as 
community reaction sometimes is quite mysterious to me, focusing on one aspect 
might be better…

So, any opinions, or even arguments against typesafe math?

Merry christmas!
Tino
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to