Hola a todos
Mi problema es el siguiente: me piden que implemente la funcion esMultiploDe\2 que devuelve True si el segundo número es múltiplo del primero, pero usando composición y aplicación parcial. Y no teno ni idea
Espero que me puedan ayudar.
Muchas gracias!
Me parece que deberías empezar por leer un poco de que es aplicación parcial y composición. Sino fijate que en taringa estan todos los resueltos, donde no vas a aprender absolutamente nada.
esMultiploDe\2, se supone que recibe dos. Primero hacé la función como siempre, luego la vás modificando según lo que necesitás.
O sea, la función en primera instancia podría ser esto:
esMultiplo x y = (mod y x == 0)
Pero (== 0) es una función también, que devuelve un valor de verdad a base de lo que está afuera sobre si hay o no resto. Entonces hay que componer de derecha a izquierda (de lo primero a lo último, respectivamente), quedando algo del tipo:
esMultiplo x y = ((== 0) . mod) y x
(compilar esto tiraría un error de tipos, pero basta con definir bien las funciones porque Haskell medio que se volvió loco acá jaja)
Ahí va queriendo, pero para simplificarlo más se pueden sacar las variables (total, si Y es múltiplo de X, se supone que X lo será también de Y), y quedaría:
esMultiplo = (== 0) . mod
Alguien que me diga si le estoy pifiando o no, porque también yo lo estoy practicando
(03-05-2013 01:37)rob. escribió: [ -> ]
esMultiplo x y = ((== 0) . mod) y x
Te hago una pregunta, eso te compila? Con WinHugs me tira error de inferencia de tipos...
Saludos!
Hace un tiempo lo había hecho con el GHC si mal no recuerdo, y me compiló (creo que recién en la última en realidad, cuando no estaban las variables). Fijate bien, porque el Hugs tira errores pero no nos explica nada.
De todos modos, yo aclaré abajo que "(compilar esto tiraría un error de tipos, pero basta con definir bien las funciones porque Haskell medio que se volvió loco acá jaja)". Ponele,
esMultiplo :: Int -> Int -> Bool
No da decirle el resultado.
El error que tienen en esa función es que mod espera 2 parámetros, y en pdep se enseña composición con sólo 1.