Estado do usuário em Parsec

Estou analisando uma expressão usando o Parsec e quero acompanhar as variáveis nessas expressões usando o estado do usuário no Parsec. Infelizmente, eu realmente não entendo como fazê-lo.

Dou o seguinte código:

import Data.Set as Set
inp = "$x = $y + $z"

data Var = V String

var = do char '

Então ou emParsecT s u m a seriaSet.Set. Mas como eu integraria a atualização do estado novar?

Eu tentei algo comomodify $ Set.insert v, mas isso não funciona, já queSet.Set não é uma mônada do estado.

n <- many1 letter let v = Var n -- I want to modify the set of variables here return v parseAssignment = ... -- parses the above assignment run = case runIdentity $ runParserT parseAssignment Set.empty "" inp of Left err -> ... Right -> ...

Então ou emParsecT s u m a seriaSet.Set. Mas como eu integraria a atualização do estado novar?

Eu tentei algo comomodify $ Set.insert v, mas isso não funciona, já queSet.Set não é uma mônada do estado.

questionAnswers(2)

yourAnswerToTheQuestion