Mensaje: #1
[PdeP] Consulta - TP Funcional
Trabajo practico
Paradigmas de Programación
Buenos días compañeros, cómo andan? Espero que muy bien.
Tengo algunas consultas respecto de un enunciado de un trabajo practico, que no logro comprender cómo implementarlo.
El enunciado dice:
3. Combinaciones de máquinas: Las máquinas de la fábrica tienen la ventaja que se pueden interconectar mediante “cintas”, que permiten formar líneas de montaje. Implementar las siguientes cintas:
a. Cinta transportadora: Combina tres máquinas de forma tal que el resultado de una sea ingresado a la otra y a su vez, su resultado sea ingresado en la restante. Cada máquina puede afectar al producto que le llega alterándolo, agregándole cosas, combinándolo con otra cosa, etc.
Por ejemplo, la siguiente consulta:
> cintaTransportadora maquinaA maquinaB maquinaC
Devuelve una nueva máquina que primero procesará su entrada con maquinaA, dará un resultado, éste se procesará con maquinaB, dará un segundo resultado, y esto se procesará por maquinaC, dando el último resultado de la secuencia de máquinas.
Esta es mi función:
cintaTransportadora:: (Bidon -> Bidon) -> (Bidon -> Cajon -> Helado) -> (Helado -> Int -> Helado) -> Bidon -> Cajon -> Int -> Helado
cintaTransportadora dispenser batidora heladera (lts,temp) (fruta,peso) frio = heladera (batidora (dispenser (lts,temp)) (fruta,peso)) frio
Me devolvieron el TP diciendo que en realidad no debo definir la función estáticamente con esas 3 funciones como parámetros, sino que más bien, la función tiene que ser capaz de recibir cualquier máquina y actuar en consecuencia.
Mi pregunta es: cómo puedo armar un prototipo de función que me permita hacer esto? Porque en el caso que adjunté arriba, se ve en el prototipo que estos son los tipos de los parámetros de entrada y salida: (Bidon -> Bidon) -> (Bidon -> Cajon -> Helado) -> (Helado -> Int -> Helado) -> Bidon -> Cajon -> Int -> Helado
Estas son las máquinas que debo combinar:
type Helado = (String, Int, Float)
type Bidon = (Int, Int) -- (litros, temperatura)
type Cajon = (String, Int) -- (fruta, peso)
heladera:: Helado -> Int -> Helado
batidora:: Bidon -> Cajon -> Helado
exprimidora:: Cajon -> Cajon
mixturadora:: Helado -> Helado -> Helado
dispenser:: Bidon -> Bidon
Desde ya, muchas gracias!!!
Saludos!
|