Valor de una expresión aritmética con variables

Las expresiones aritméticas con variables pueden representarse usando el siguiente tipo de datos

Por ejemplo, la expresión 2·(a+5) se representa por

Definir la función

tal que valor x e es el valor de la expresión x en el entorno e (es decir, el valor de la expresión donde las variables de x se sustituyen por los valores según se indican en el entorno e). Por ejemplo,

Soluciones

A continuación se muestran las soluciones en Haskell y las soluciones en Python.


Soluciones en Haskell


Soluciones en Python

Un comentario

  1. La función valor toma como argumentos una expresión Expr y un entorno [(Char,Int)], y devuelve un entero. La expresión Expr se construye mediante una suma de constructores, cada uno de los cuales representa una operación aritmética diferente.

    Un posible implementación de la función valor podría ser:

    La función utiliza una estructura case of para determinar cual constructor ha sido usado al construir la expresión y actúa en consecuencia.

    En el primer caso, (C n), se devuelve directamente el valor del entero contenido en el constructor.

    En el segundo caso, (V x), se busca en el entorno la asociación correspondiente a la variable y se devuelve su valor.

    En el tercer caso, (S e1 e2), se evalúan ambas expresiones y se suman sus valores.

    En el cuarto caso, (P e1 e2), se evalúan ambas expresiones y se multiplican sus valores.

Escribe tu solución