UTNianos

Versión completa: Ayuda tp funcional pdp
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Buenas a todos, les hago una consulta, estoy trabadisimo con el tp del paradigma funcional, la verdad no entiendo lo que me pide el enunciado

data Planta = Arbol {especie :: (String, (Integer-> Integer)),
altura :: Integer,
ancho :: Integer,
vitalidad :: Double }

3) Implementar los siguientes factores climáticos que pueden modificar los arboles.
lluvia milimetros unArbol, al llover aumenta en un 1 metro la altura del árbol y además aumenta la vitalidad del árbol en un porcentaje igual a los milímetros recibidos.
temperatura grados unArbol, si es una temperatura bajo cero disminuye la vitalidad a la mitad, si es de más de 40 también disminuye vitalidad pero en un 40% y entre medio, no lo afecta.
granizo unArbol, disminuye a la mitad el ancho y alto del árbol.

La verdad no entiendo lo que me pide, posiblemente sea que algo de teoria que se me escapo de la clase.

Si alguno me puede dar una mano, super agradecido.

Desde ya muchas gracias!!!

Abrazo
A ver si me acuerdo algo..

Según entiendo, tenés que implementar 3 funciónes:

* lluvia, que recibe 2 parámetros: milimetros y arbol
* temperatura, que recibe 2 parámetros: grados y arbol
* granizo, que recibe un solo parámetro: arbol

No aclara, pero supongo que las funciones te deberían devolver el árbol con sus valores alterados (en base a la función que uses).

Para la función granizo, disminuye el ancho y la altura del árbol a la mitad, te quedaría algo asi:


granizo (especie, altura, ancho, vitalidad) = (especie, altura `div` 2, ancho `div` 2, vitalidad)



Si lo ejecutaras por ej. con un tipo de arbol 'Pino', que tiene los siguientes datos:
(Especie es una tupla compuesta por un String y una función que recibe un entero y devuelve un entero, lo voy a dejar con el nombre para no enquilombarla más)


pino = (especie, 16, 20, 8.3)
granizo pino
> pino = (especie, 8, 10, 8.3)



Para temperatura vas a tener que usar guardas (ver funciones por partes) dependiendo el valor que le pases a grados.

Para lluvia, va a ser como con granizo, vas a tener que sumarle 1 a la altura del arbol y con los milimetros como porcentaje modificas el valor de la vitalidad.
URLs de referencia