Modern Compiler Implementation in Haskell