Haskell Implementation of LLVM opt