An implementation of the unification problem using Haskell