A compiler for Cada, a purely functional programming language inspired by Haskell with syntactic sugar for the state monad