Type Systems: Covariance, Contravariance, Bivariance, and Invariance explained

Please do not link to this article on Reddit or Hacker News.