Tengo el siguiente código:comportamiento extraño con la concurrencia en Haskell
import Control.Concurrent
sleepSort = mapM_ (forkIO . put)
where put x = threadDelay (x*10000) >> print x
Esto realiza una especie de sueño en un conjunto de números enteros, y funciona bien, además de una advertencia:
el programa imprime cada uno de los números en el conjunto de datos en secuencia, tal como se supone que debe hacerlo. Sin embargo, después de que termine de imprimir el último número, espera a que el usuario ingrese un número, luego echos ese número y luego completa.
No creo que pida la opinión del usuario en ningún momento, entonces, ¿por qué sucede esto?
¿Está utilizando GHCi? Si es así, ¿podría simplemente actuar de forma peculiar de una manera que parece como si fuera necesaria y luego echos un número? Si no, ¿cómo se ve tu 'main'? – gspr
Si está intentando esto en GHCi, intente escribir 'print' como la entrada del usuario. – Vitus