Introduction to Category Theory in Scala