21-04-2017, 03:19
Hola que tal? Estoy teniendo problemas para arrancar con el TP de funcional y quería ver si alguno me podría dar una mano
Mi modelado de información es el siguiente:
data Cliente = Cliente {
nombre :: String,
resistencia :: Int,
amigos :: [Cliente],
bebidas :: [Bebida]
} deriving (Show)
type Bebida = Cliente -> Cliente
rodri = Cliente {
nombre ="Rodri",
resistencia = 55,
amigos = [],
bebidas = [tintico]
}
marcos = Cliente{
nombre = "Marcos",
resistencia = 40,
amigos = [rodri],
bebidas = [klusener "guinda"]
}
cristian = Cliente {
nombre = "Cristian",
resistencia = 2,
amigos = [],
bebidas = [grogXD, jarraLoca]
}
Los tipos de Bebida son los siguientes:
grogXD :: Bebida
grogXD cliente = cliente {resistencia = 0}
jarraLoca :: Bebida
jarraLoca cliente = cliente {resistencia = resistencia cliente - 10, amigos = map (cambiarResitenciaCliente) (amigos cliente) }
cambiarResitenciaCliente cliente = cliente { resistencia = resistencia cliente - 10}
klusener :: String -> Bebida
klusener gusto cliente = cliente { resistencia = resistencia cliente - length gusto }
tintico :: Bebida
tintico cliente = cliente { resistencia = resistencia cliente + length (amigos cliente) *5}
Punto a) Hacer que un cliente pueda tomar una bebida. Además del efecto que le causa la bebida en sí, se debe registrar esa bebida en su historial de bebidas tomadas.
Punto b) Desarrollar la función tomarTragos, la cual recibe a un cliente y una lista de tragos y retorna al cliente luego de tomarlos todos los tragos.
Yo estoy tratando de hacer la función por ejemplo para el primer punto tomarBebida :: Bebida y luego no entiendo como pasar por parametro la función completa que recibiria un (grogXD ana por ejemplo) y devolveria un cliente con el cambio realizado
Desde ya, gracias!
Mi modelado de información es el siguiente:
data Cliente = Cliente {
nombre :: String,
resistencia :: Int,
amigos :: [Cliente],
bebidas :: [Bebida]
} deriving (Show)
type Bebida = Cliente -> Cliente
rodri = Cliente {
nombre ="Rodri",
resistencia = 55,
amigos = [],
bebidas = [tintico]
}
marcos = Cliente{
nombre = "Marcos",
resistencia = 40,
amigos = [rodri],
bebidas = [klusener "guinda"]
}
cristian = Cliente {
nombre = "Cristian",
resistencia = 2,
amigos = [],
bebidas = [grogXD, jarraLoca]
}
Los tipos de Bebida son los siguientes:
grogXD :: Bebida
grogXD cliente = cliente {resistencia = 0}
jarraLoca :: Bebida
jarraLoca cliente = cliente {resistencia = resistencia cliente - 10, amigos = map (cambiarResitenciaCliente) (amigos cliente) }
cambiarResitenciaCliente cliente = cliente { resistencia = resistencia cliente - 10}
klusener :: String -> Bebida
klusener gusto cliente = cliente { resistencia = resistencia cliente - length gusto }
tintico :: Bebida
tintico cliente = cliente { resistencia = resistencia cliente + length (amigos cliente) *5}
Punto a) Hacer que un cliente pueda tomar una bebida. Además del efecto que le causa la bebida en sí, se debe registrar esa bebida en su historial de bebidas tomadas.
Punto b) Desarrollar la función tomarTragos, la cual recibe a un cliente y una lista de tragos y retorna al cliente luego de tomarlos todos los tragos.
Yo estoy tratando de hacer la función por ejemplo para el primer punto tomarBebida :: Bebida y luego no entiendo como pasar por parametro la función completa que recibiria un (grogXD ana por ejemplo) y devolveria un cliente con el cambio realizado
Desde ya, gracias!