I am trying to parse escape sequences as well as plain characters. Can this be made more succinct?
import Control.Applicative
import Data.Char
import Numeric
import Text.Parsec hiding ((<|>))
echar :: Parsec String () Char
echar = (char '\\' >>
((char 'b' >> return '\b')
<|> (char 'f' >> return '\f')
<|> (char 'n' >> return '\n')
<|> (char 'r' >> return '\r')
<|> (char 't' >> return '\t')
<|> (char 'u' >> count 4 hexDigit >>= return . chr . fst . head . readHex)
<|> (char 'v' >> return '\v')
<|> (noneOf "u")))
<|> noneOf "\\"