Valor de una expresión aritmética básica
Usando el tipo de las expresiones aritméticas básicas, definir la función
1 |
valor :: Expr -> Int |
tal que valor e
es el valor de la expresión aritmética e
. Por ejemplo,
1 |
valor (P (C 2) (S (C 3) (C 7))) == 20 |
Soluciones
A continuación se muestran las soluciones en Haskell y las soluciones en Python.
1 2 3 4 5 6 |
import Expresion_aritmetica_basica (Expr(..)) valor :: Expr -> Int valor (C x) = x valor (S x y) = valor x + valor y valor (P x y) = valor x * valor y |
1 2 3 4 5 6 7 8 9 10 11 |
from src.expresion_aritmetica_basica import Expr, C, S, P def valor(e: Expr) -> int: match e: case C(x): return x case S(x, y): return valor(x) + valor(y) case P(x, y): return valor(x) * valor(y) assert False |