On Tue, 2008-05-06 at 09:52 -0700, Ross Boylan wrote: > I kept getting parse failures when I ran my little Parsec TeX snippet on > a sample code. Seeing that ghc6.8 had debugging, I upgraded to it, only > to discover that I can't even get the code to compile. > > $ ghci > GHCi, version 6.8.2: http://www.haskell.org/ghc/ :? for help > Loading package base ... linking ... done. > Prelude> :load g > [1 of 1] Compiling Main ( g.hs, interpreted ) > > g.hs:11:19: > Couldn't match expected type `t1 -> GenParser Char () t' > against inferred type `CharParser st ()' > In the expression: reserved "\\begin" 1 > In a 'do' expression: reserved "\\begin" 1 > In the expression: > do reserved "\\begin" 1 > braces (many1 letter) > Failed, modules loaded: none.
Look at the expression. > Do parsec and 6.8 just not get along? > > More generally, how can I go about diagnosing such problems? Since I > can't load it, I can't debug it or get :info on the types. > > It looks as if maybe it's expecting a Monad, but getting a parser. But > I don't know why that would have changed vs using 6.6. > > More questions about the error messages. Where is the expected type, > and where is the inferred type, coming from? I'm guessing the expected > type is from the function signature and the position inside a do (or > perhaps from the argument following the ; in the do?) and the inferred > type is what I would just call the type of reserved "begin". > > And what is the 1 that appears after 'reserved "\\begin"'? An indicator > that all occurrences of the text refer to the same spot in the program? > Nesting level? Look at your code. > Source: > import Text.ParserCombinators.Parsec > import qualified Text.ParserCombinators.Parsec.Token as P > import Text.ParserCombinators.Parsec.Language(haskell) > reserved = P.reserved haskell > braces = P.braces haskell > > > -- TeX example > > envBegin :: Parser String > envBegin = do{ reserved "\\begin" > 1 ; braces (many1 letter) > } _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe