Translated and Based on free online reading book Programming in Scala, First Edition