Universal algebra approach (which is compatible with categorical approach) to free algebras (including higher order structures like functors, applicative functors or monads). Mathematical introduction alongside with some of the Haskell ideas is desribed in a blog post.