This is the fifth of a series of articles on “Type Parameters and Type Members”. If you haven’t yet, you should start at the beginning, which introduces code we refer to throughout this article without further ado. Let’s consider a few values of type MList: val estrs: MList = MCons("hi", MCons("bye", MNil())): MList.Aux[String] val eints: MList = MCons(21, MCons(42, MNil())): MList.Aux[Int] val ebools: MList = MCons(true, MCons(false, MNil())): MList.Aux[Boolean] Recall from the first...