
Hi. I'm Following the book of Programming in haskell written by Graham Hutton. In Chapter number 8 there is a discussion about functional parsers and it is defined a functional Parser item and some basic parsers as follow *success :: a -> Parser a* *success v = \ inp -> [(v,inp)]* *failure :: Parser a* *failure = \inp -> [ ]* *item :: Parser Char* *item = \inp -> case inp of* *[ ] -> [ ]* *(x:xs) -> [(x,xs)]* Based on this parser it is defined a* *new parser called *sat p* *sat :: (Char -> Bool ) -> Parser Char* *sat p = do x <- item* *if p x then success x else failure* as result, this error appears *Couldn't match expected type `Char'* *with actual type `[(Char, String)]'* *In the first argument of `p', namely `x'* *In the expression: p x* *In the expression: if p x then success x else failure* Can you help me ? Greets, Felipe