Haskell LanguageCommon monads as free monads