Expresiones aritméticas generales
Las expresiones aritméticas. generales se contruyen con las sumas generales (sumatorios) y productos generales (productorios). Su tipo es
1 2 3 4 |
data Expresion = N Int | S [Expresion] | P [Expresion] deriving Show |
Por ejemplo, la expresión (2 * (1 + 2 + 1) * (2 + 3)) + 1 se representa por S [P [N 2, S [N 1, N 2, N 1], S [N 2, N 3]], N 1]
Definir la función
1 |
valor :: Expresion -> Int |
tal que (valor e) es el valor de la expresión e. Por ejemplo,
1 2 |
λ> valor (S [P [N 2, S [N 1, N 2, N 1], S [N 2, N 3]], N 1]) 41 |
Soluciones
1 2 3 4 5 6 7 8 9 |
data Expresion = N Int | S [Expresion] | P [Expresion] deriving Show valor :: Expresion -> Int valor (N x) = x valor (S es) = sum (map valor es) valor (P es) = product (map valor es) |
Pensamiento
Vivir es devorar tiempo, esperar; y por muy trascendente que quiera ser nuestra espera, siempre será espera de seguir esperando.
Antonio Machado