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.