ViperVM in Haskell