Implemented a failure monad and a failure monadic -> macro