Ir al contenido principal

Valor de una expresión aritmética básica

Usando el tipo de las expresiones aritméticas básicas, definir la función

   valor :: Expr -> Int

tal que valor e es el valor de la expresión aritmética e. Por ejemplo,

   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.

Soluciones en Haskell

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

Soluciones en Python

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