In computer science, a predicate is called an invariant to a sequence of operations provided that: if the predicate is true before starting the sequence, then it is true at the end of the sequence.
I'm moving my first steps in Scala and I would like to make the following code works: trait Gene[+T] { …
scala covariance invariants