我正在学习 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/