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

Rey*_*och 3 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)
Run Code Online (Sandbox Code Playgroud)

Lee*_*Lee 7

IO [Int]在你的基础案例中你需要一个:

intArray 0 = return []
Run Code Online (Sandbox Code Playgroud)

并且您需要更改return递归情况以使用正确的优先级:

return (int:nextInt)
Run Code Online (Sandbox Code Playgroud)

顺便说一下,[Int]是一个单独链接的整数列表,而不是一个数组.您还可以使用replicateMControl.Monad 简化您的功能:

import Control.Monad
intArray i = replicateM i (fmap read getLine)
Run Code Online (Sandbox Code Playgroud)