01-05-2017, 01:21
PROBLEMA PEDIDO:
Definir una función esResultadoPar, que aplicándola con número n y otro m, devuelve true si el resultado de elevar n a m es par.
Main> esResultadoPar 2 5
True
Main> esResultadoPar 3 2
False
Nota: Resolverlo utilizando aplicación parcial y composición.
¡Dame una pista!
Te dejamos algunas funciones que pueden ayudarte:
even
^ (sirve para elevar un número)
Y podés tener en cuenta un truquito de las funciones infijas: se pueden aplicar parcialmente de dos formas:
(/2)
<function> -- devuelve una función que divide por dos
-- es decir, espera el primer parámetro de la división
(2/)
<function> -- devuelve una función que divde al dos
-- es decir, espera el segundo parámetro de la división
Resolución:
esResultadoPar n = even.(^n)
Ups, algo no anduvo bien
Resultados de las pruebas:
esResultadoPar elevar 2 a la 5 es par Ver detalles
esResultadoPar elevar 9 a la 2 no es par Ver detalles
esResultadoPar elevar 5 a la 3 no es par
Alguno entiende cual es el error? Lo probe con atom y winGHCI y anda bien...
edit: el error no lo toma al hacer
esResultadoPar m = even . (m ^)
Definir una función esResultadoPar, que aplicándola con número n y otro m, devuelve true si el resultado de elevar n a m es par.
Main> esResultadoPar 2 5
True
Main> esResultadoPar 3 2
False
Nota: Resolverlo utilizando aplicación parcial y composición.
¡Dame una pista!
Te dejamos algunas funciones que pueden ayudarte:
even
^ (sirve para elevar un número)
Y podés tener en cuenta un truquito de las funciones infijas: se pueden aplicar parcialmente de dos formas:
(/2)
<function> -- devuelve una función que divide por dos
-- es decir, espera el primer parámetro de la división
(2/)
<function> -- devuelve una función que divde al dos
-- es decir, espera el segundo parámetro de la división
Resolución:
esResultadoPar n = even.(^n)
Ups, algo no anduvo bien
Resultados de las pruebas:
esResultadoPar elevar 2 a la 5 es par Ver detalles
esResultadoPar elevar 9 a la 2 no es par Ver detalles
esResultadoPar elevar 5 a la 3 no es par
Alguno entiende cual es el error? Lo probe con atom y winGHCI y anda bien...
edit: el error no lo toma al hacer
esResultadoPar m = even . (m ^)