replicateM n a
возвращает список значений, возвращаемых a
.В вашем случае это был бы просто список единиц, потому что у вас есть return ()
в конце, но если вы замените его на return x
, вы получите список прочитанных целых чисел.Затем вы можете просто использовать <-
, чтобы получить его из IO
.
. Вы также можете упростить свой код, используя readLine
вместо getLine
и read
.Аналогично putStrLn . show
можно заменить на print
.
main = do
n <- readLn
ints <- replicateM n readLn :: IO [Int]
print ints