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

标签 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)

最佳答案

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

intArray 0 = return []

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

return (int:nextInt)

顺便说一句,[Int] 是一个整数单链表,而不是一个数组。您还可以使用 Control.Monad 中的 replicateM 来简化您的函数:

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

关于Haskell 将用户输入存储在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29041759/

相关文章:

c - Haskell FFi 与 c2hs : Better out-marshalling of structs

haskell - Monad 从 Lift 移植到 Yesod 的 Persistent 时遇到麻烦

javascript - JS 选择更改

JQuery:无限输入选择

python - 如何在python中输入

haskell - haskell中UUID的确定性生成

haskell - 获取运行时的线程数 (HEC)

windows - Windows 安装程序上的 Haskell

Html 输入类型文本,带有用于 css 中表示的每个字符的插槽

bash - 为什么for循环中组合变量的回显不起作用?