1votos

Mounstro de las galletas (Haskell) en Haskell

por josejuan hace 3 años

Interactivo (la salida se muestra según se meten los datos, no hasta tener todos, con lo que si el fichero es muy grande, otras versiones no funcionarían... ;P

Realizar el problema según los planteamientos dados en lenguaje de programación Haskell.

1
2
3
caso = map read.words <$> getLine >>= \[n,c] -> (print.ceiling) (n/c) >> caso 
 
main = getLine >>= const caso 
5 comentarios
0votos

Escrito por josejuan hace 3 años

Ejemplo de ejecución interactiva:
> main
2
6 2
3
10 3
4
0
*** Exception: galletas.hs:3:39-77: Non-exhaustive patterns in lambda

Como se puede apreciar, con 0 termina la ejecución ;P
0votos

Escrito por Pedro Romero hace 3 años

SOLUCIONADO!
Bien hecho! Solamente un pequeño paréntesis, no se porque pero a mi me marca un error el WinghCi cuando intento cargar el programa me dice lexical error en el simbolo $, he intentado trasncribirlo desde 0 pero aun así a mi me marca ese error.
Saludos.
(Próximamente mas desafios en haskell)
1votos

Escrito por drabor hace 3 años

Tienes que importar <$> de Control.Applicative.
0votos

Escrito por drabor hace 3 años

Me voy a dar por aludido y aclarar que la versión con interact no espera a leer todo el archivo, responde también según le llegan los datos (bueno, no del todo :P). La prueba la realicé con redirecciones y no probé a introducir los datos a mano. Resulta que el programa no responde a una entrada hasta que metes otra entrada más, ya que init nunca sabe si el dato introducido es el último o no, por lo que va con cierto retraso y confunde:
*Main> main
2
6 3
12 4
2

3

*** Exception: Prelude.foldl1: empty list
*Main>
0votos

Escrito por josejuan hace 3 años

"interact no espera a leer todo el archivo"

no @drabor, no lo decía por eso, pensaba que se evaluaba la lista completa pero estaba equivocado (estoy que me salgo últimamente XD XD), tu versión funciona perfectamente ;)

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.