When an F type accepts a type parameter of A, we can add a + or - sign in front of the parameter declaration to indicate the variance of F on A:
- F[+A] makes F covariant on A. This means that if B <:< A (where B extends A), then F[B] <:< F[A].
- F[-A] makes F contravariant on A. If B <:< A, then F[A] <:< F[B].
- F[A] makes F invariant on A. If B <:< A, then there is no relationship between F[A] and F[B].