Haskell将用户输入存储在数组中

时间:2015-03-13 20:54:39

标签: arrays haskell input

我正在学习Haskell,我希望用户在控制台中输入x数字,并将这些数字存储在数组中,然后传递给我的函数。

不幸的是,无论我尝试什么它都不起作用,这是我的代码:

-- Int Array
intArray :: Int -> IO [Int]
intArray 0 = []
intArray x = do
    str <- getLine
    nextInt <- intArray (x - 1)
    let int = read str :: Int
    return int:nextInt

-- Main Function
main = do
    array <- intArray 5
    putStrLn (show array)

1 个答案:

答案 0 :(得分:7)

您的基本情况需要IO [Int]

intArray 0 = return []

您需要更改递归案例中的return以使用正确的优先级:

return (int:nextInt)

另外,[Int]是一个单独链接的整数列表,而不是一个数组。您还可以使用Control.Monad中的replicateM来简化您的功能:

import Control.Monad
intArray i = replicateM i (fmap read getLine)