I've been getting some pretty weird complaints from the type checker. And I just figured out why! Grr... Is there any function that does the same thing as "until", but in a monad?