Text this: Covariance and Controvariance: a fresh look at an old issue (a primer in advanced type systems for learning functional programmers)