Expresiones aritméticas generales
Las expresiones aritméticas. generales se contruyen con las sumas generales (sumatorios) y productos generales (productorios). Su tipo es
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
valor :: Expresion -> Int
tal que (valor e) es el valor de la expresión e. Por ejemplo,
λ> valor (S [P [N 2, S [N 1, N 2, N 1], S [N 2, N 3]], N 1]) 41
Soluciones
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)