1 ) Strong typing and functions that support it.
C # / Java v1.0 were strongly typed languages, but sometimes you had to break static typing because there was simply not enough expressiveness to do something and statically type (i.e. you needed casts when pulling objects from untyped e.g. collection).
Generics, of course, greatly improve the situation, and everything becomes even more fun in languages that support higher-order generators (for example, Scala).
2 ). If this is obvious, I will not need to write. The output type is a great tool for this.
3 ) Great library. If this is often necessary, I do not need to write.
Mau
source share