Parsec.Prim:setPosition
Prelude> :m Text.ParserCombinators.Parsec Prelude Text.ParserCombinators.Parsec> :t setPosition setPosition :: SourcePos -> GenParser tok st ()
module Main where import Text.ParserCombinators.Parsec import Text.ParserCombinators.Parsec.Token import Text.ParserCombinators.Parsec.Language lexer :: TokenParser () lexer = makeTokenParser(javaStyle) test = do { string "foo" ; x <- getPosition ; setPosition x ; return x }
で、
Prelude> :l 20090125_parsec00.hs [1 of 1] Compiling Main ( 20090125_parsec00.hs, interpreted ) Ok, modules loaded: Main. *Main> parseTest test "foo" Loading package parsec-2.0 ... linking ... done. (line 1, column 4)