Actualización de «Sustitución en una expresión aritmética»
He actualizado las soluciones del ejercicio Sustitución en una expresión aritmética cuyo enunciado es
La expresiones aritméticas se pueden representar mediante el siguiente tipo
data Expr = C Int | V Char | S Expr Expr | P Expr Expr deriving (Eq, Show)
por ejemplo, la expresión "z*(3+x)" se representa por (P (V 'z') (S (C 3) (V 'x')))
.
Definir la función
sustitucion :: Expr -> [(Char, Int)] -> Expr
tal que (sustitucion e s) es la expresión obtenida sustituyendo las variables de la expresión e según se indica en la sustitución s. Por ejemplo,
λ> sustitucion (P (V 'z') (S (C 3) (V 'x'))) [('x',7),('z',9)] P (C 9) (S (C 3) (C 7)) λ> sustitucion (P (V 'z') (S (C 3) (V 'y'))) [('x',7),('z',9)] P (C 9) (S (C 3) (V 'y'))