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)