Embedding a "dynamically typed" language in Haskell