day 4 

Yesterday we reviewed kinds and types, explored Tagged type, and started looking at Semigroup and Monoid as a way of abstracting binary operations over various types.

I’ve gotten a few feedbacks. First, paulp suggested that I could use companion type like Option.type for our kind calculator:

Using the updated version, we get the following:

scala> kind[Functor.type]
res1: String = Functor's kind is (* -> *) -> *. This is a type constructor that takes type constructor(s): a higher-kinded type.