[Haskell] manipulating untyped lambda-calculus in Haskell