Is there a way to perform a case on the value stored within a monad without having to bind a name to it?
i.e. instead of doing this:
c <- getChar case
The answer is no. In Haskell 98, you can't use a case statement without using a name inside it. But there is a proposal for adding support for case-lambdas. The syntax they propose is the same you propose too.