Soy nuevo en Haskell y estoy tratando de analizar expresiones. Me enteré de Parsec y también encontré algunos artículos, pero parece que no entiendo lo que tengo que hacer. Mi problema es que quiero dar una expresión como "x^2 + 2 * x + 3" y el resultado es una función que toma un argumento x y devuelve un valor. Lo siento mucho si esta es una pregunta fácil, pero realmente necesito ayuda. ¡Gracias! El código que inserté pertenece al artículo que puedes encontrar en this link.Función de análisis en haskell
import Control.Monad(liftM)
import Text.ParserCombinators.Parsec
import Text.ParserCombinators.Parsec.Expr
import Text.ParserCombinators.Parsec.Token
import Text.ParserCombinators.Parsec.Language
data Expr = Num Int | Var String | Add Expr Expr
| Sub Expr Expr | Mul Expr Expr | Div Expr Expr
| Pow Expr Expr
deriving Show
expr :: Parser Expr
expr = buildExpressionParser table factor
<?> "expression"
table = [[op "^" Pow AssocRight],
[op "*" Mul AssocLeft, op "/" Div AssocLeft],
[op "+" Add AssocLeft, op "-" Sub AssocLeft]]
where
op s f assoc
= Infix (do{ string s; return f}) assoc
factor = do{ char '('
; x <- expr
; char ')'
; return x}
<|> number
<|> variable
<?> "simple expression"
number :: Parser Expr
number = do{ ds<- many1 digit
; return (Num (read ds))}
<?> "number"
variable :: Parser Expr
variable = do{ ds<- many1 letter
; return (Var ds)}
<?> "variable"
Tengo algo que encontré en algunos artículos, pero está bien publicarlo aunque no sea mío. – izayoi
por favor publíquelo ya que a otros también les puede resultar útil. Asegúrese de incluir un enlace a la fuente original. –