It's interesting to me that when people boost Ada's type safety, they always compare it to other Foogols, like C and Java.
OK, how about Ada vs Haskell?
Does Ada have anything like Haskell typeclasses or am I going to have to write a different sort function for every single data type which can be sorted?
Does Ada have a numeric tower, or will I have to accept truncation and re-write basic numeric functions?
Haskell has strong static typing without forcing me to specify irrelevant details up front. How about Ada?
Haskell makes it extraordinarily hard to write memory safe, performance critical code that doesn't use a garbage collector. Just consider Ada's support for arrays versus that of Haskell for example. Haskell is nice for certain problem domains, but for those that Ada is used for you would be borderline insane to consider it.
> Does Ada have anything like Haskell typeclasses or am I going to have to write a different sort function for every single data type which can be sorted?
Generics and interfaces.
> Does Ada have a numeric tower, or will I have to accept truncation and re-write basic numeric functions?
Subtypes and ranges.
> Haskell has strong static typing without forcing me to specify irrelevant details up front. How about Ada?
If you mean type inference. No in Ada everything has to explicit.
Now you are comparing Apples and Oranges here, as Ada is a systems programming language.
So it allows for memory safe systems programming, with all the direct hardware access and memory allocation control that such use cases require.
Whereas Haskell, currently, still requires language extensions like on HalVM and House OS implementations.
OK, how about Ada vs Haskell?
Does Ada have anything like Haskell typeclasses or am I going to have to write a different sort function for every single data type which can be sorted?
Does Ada have a numeric tower, or will I have to accept truncation and re-write basic numeric functions?
Haskell has strong static typing without forcing me to specify irrelevant details up front. How about Ada?