Haskell LanguageCommon functors as the base of cofree comonads