Mam następujący kod:Dziwne zachowanie z współbieżności w Haskell
import Control.Concurrent
sleepSort = mapM_ (forkIO . put)
where put x = threadDelay (x*10000) >> print x
ten wykonuje coś w rodzaju snu na zbiór liczb całkowitych, i działa dobrze, poza jednym zastrzeżeniem:
program wypisuje out każda z liczb w zestawie danych w kolejności, tak jak powinna. Jednak po zakończeniu drukowania ostatniego numeru czeka na wpisanie przez użytkownika pewnej liczby, a następnie echa, które cofają, a następnie kończą.
Nie sądzę, że w dowolnym momencie pytam o dane wprowadzone przez użytkownika, więc dlaczego tak się dzieje?
Czy używasz GHCi? Jeśli tak, czy może to być po prostu dziwaczne działanie w sposób, który wydaje się, że zabiera i echa liczby? Jeśli nie, jak wygląda twój "główny"? – gspr
Jeśli próbujesz to w GHCi, spróbuj wpisać "print" jako dane wejściowe użytkownika. – Vitus