Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Ayuda con TP de Paradigmas Funcional
Autor Mensaje
Galaxy Sin conexión
Campeon del cubo Rubik
Quiero dias de 48 horas
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 103
Agradecimientos dados: 21
Agradecimientos: 4 en 3 posts
Registro en: Mar 2012
Mensaje: #1
Ayuda con TP de Paradigmas Funcional Dudas y recomendaciones Paradigmas de Programación
Chicos:

A ver si alguno me puede ayudar

Tengo problemas con el TP de Paradigmas.

1.- No esta bien armada la guarda creo porque me hace conflicto con el punto 1 donde definimos a los clientes como data (sugerencia de los ayudantes)

2.- El punto 5 tampoco me compila. Estan definidas las bebidas y lo que producen como types

-- Punto1
data Cliente = UnCliente {nombre :: String , resistencia :: Int , amigos :: Int} deriving Show



--Punto2
unRodri = UnCliente "Rodri" 55 0
unMarcos = UnCliente "Marcos" 40 1
unCristian = UnCliente "Cristian" 2 0
unAna = UnCliente "Ana" 120 2

--Punto3

comoEsta :: [Cliente] -> [Cliente] -> String
comoEsta UnCliente | ((>50).resistencia) UnCliente = "Fresco"
| ((>0).amigos) UnCliente = "Piola"
| otherwise = "duro"

--Punto 5

type Bebida = UnCliente -> UnCliente

grogXD :: Bebida
grogXD (nombre, resistencia,amigos)=(nombre, resistencia==0,amigos)

jarraLoca :: Bebida
jarraLoca (nombre, resistencia, amigos)=(nombre, resistencia -10, amigos ==0)

klusener :: Bebida
klusener (nombre, resistencia, amigos)=(nombre,resistencia - gustoKlusener, amigos)

gustoKlusener gusto = length gusto

gusto = ["chocolate", "huevo", "frutilla"]

tintico :: Bebida
tintico (nombre, resistencia, amigos)= (nombre, resistencia - (amigos*5), amigos)

soda :: Bebida
soda (nombre, resistencia, amigos)= (("e"++r*fuerza++"p"++nombre), resistencia, amigos)

Espero que alguno me pueda ayudar.
Muchas gracias.

El enunciado del TP en cuestion es: https://docs.google.com/document/d/1pzFt...k8u3xeggkw
16-04-2017 00:23
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
GusC Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 2
Agradecimientos dados: 2
Agradecimientos: 1 en 1 posts
Registro en: Apr 2013
Mensaje: #2
RE: Ayuda con TP de Paradigmas Funcional
Hola,

el problema que estás teniendo en el punto 3 es que estás usando el nombre del constructor (UnCliente) como si fuese un parámetro, cuando deberías usar una variable (las variables siempre comienzan con minúscula).

En el punto 5 cuando definís el sinónimo de tipo Bebida tendrías que usar Cliente en vez de UnCliente, ya que Cliente es el tipo de dato mientras que UnCliente es el constructor del mismo.

Por último en ese mismo punto en cada una de las definiciones que haces de las bebidas tomás como argumento una tupla cuando en realidad lo que esperás es un data Cliente, para ver como tenés que hacer y repasar un poco sobre esto te recomiendo este apunte: https://docs.google.com/document/d/11C2U...k5yFI/edit

PD: ¿En qué curso estás?, Deberías pedirle ayuda a los ayudantes o al profe que están para esto, no lo digo de mala onda sino que nunca se sabe quien te responde por acá, y más de una vez vi a gente responder cualquiera o resolver el ejercicio de una en vez de ayudar.

Saludos
16-04-2017 21:59
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Batman Sin conexión
Empleado del buffet
Gotham City
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 24
Agradecimientos dados: 2
Agradecimientos: 61 en 15 posts
Registro en: Mar 2016
Mensaje: #3
RE: Ayuda con TP de Paradigmas Funcional
Como decían arriba, en el Punto 3 estás usando "UnCliente" como parámetro de la función...
Vos ya le definiste antes los tipos de la función (suponiendo que lo hiciste bien =P), entonces no necesitas volver a decirle de que tipo van a ser (por si es lo que quisiste hacer/pensaste). Si lo pones en minúscula te lo toma como un parámetro más y funcionaría.
Peeeeeeero por otro lado tenes mal definida la función... fijate, le pusiste

[Cliente] -> [Cliente] -> String.

Ahí dice que la función va a recibir una lista de Clientes (por el corchete), va a recibir OTRA lista de Clientes, y va a devolver un String.
Creo que no es eso lo que hace....No recibe un Cliente y devuelve un String? pensalo =)

En el Punto 5,

type Bebida = UnCliente -> UnCliente

Tu tipo de dato es Cliente, no UnCliente.... UnCliente es algo así como un constructor. Fijate las definiciones del Punto 2, vos pones

unRodri = UnCliente "Rodri" 55 0

Entonces con esos 3 parámetros que le mandas ("Rodri", 55 y 0) se encarga de "crearte" un Cliente. Sabe que "Rodri" va a ser el nombre, 55 la resistencia y 0 los amigos.
Así que tendrías que arreglar el Type...

Además, en las funciones de los tragos usaste tuplas como parámetros, cuando arriba las definís como Cliente.

grogXD :: Bebida
grogXD (nombre, resistencia,amigos) <--- TUPLA! = (nombre, resistencia==0,amigos) <--- TUPLA


Vos ya le dijiste que es un Cliente, podrías hacer algo así...

grogXD :: Bebida
grogXD unCliente = UnCliente (nombre unCliente) (0) (amigos unCliente)

jarraLoca :: Bebida
jarraLoca algunCliente = UnCliente (nombre algunCliente) (resistencia algunCliente -10) (amigos algunCliente)



Creo que ahí están los principales problemas, la lógica no la miré.
Ultimo detalle (je) en el grogXD le pusiste "resistencia == 0", eso devuelve un booleano (cosa que tiraría error por la definición de Cliente, ahí va un Int).
Y acordate que no hay asignación en funcional. Así que directamente devuelve 0 (como lo pusé arriba), no haría falta asignárselo a la resistencia.
thumbup3

"It's Not Who I Am Underneath, But What I Do That Defines Me."
(Este mensaje fue modificado por última vez en: 17-04-2017 18:30 por Batman.)
17-04-2017 18:17
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Galaxy Sin conexión
Campeon del cubo Rubik
Quiero dias de 48 horas
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 103
Agradecimientos dados: 21
Agradecimientos: 4 en 3 posts
Registro en: Mar 2012
Mensaje: #4
RE: Ayuda con TP de Paradigmas Funcional
Gracias chicos:

A los ayudantes los volvimos locos con preguntas y tuvieron la buena onda de ayudar. Luego descubri que habia un error en el apunte que habian mandado por mail y por eso es que pusimos un Cliente en el data y UnCliente en el constructor. Todo eso ya lo corregimos.
Habia un par de cosas que no me supieron decir bien, hasta que aparecio otro ayudante para ayudar a nuestro ayudante.

Por mail nos ayudaron bastante, pero habia cosas que las logramos entender cuando el ayudante se sento con nosotros en la compu del laboratorio.

El apunte que me paso Gus C ya lo lei completo.

Cambie lo de las tuplas por funciones de data (antes de entregar)

Pero bueno, ya esta. Ya compila. Solo hay que terminar un punto y pulir unas cosas que nos dijo el ayudante.

Muchas gracias!!
(Este mensaje fue modificado por última vez en: 18-04-2017 14:15 por Galaxy.)
17-04-2017 23:41
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.