Something completely wrong with my monad