我正在学习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
在递归情况下更改,以使用正确的优先级:
return (int:nextInt)
顺便说[Int]
一句,是一个单数链接的整数列表,而不是一个数组。您还可以使用replicateM
Control.Monad简化功能:
import Control.Monad
intArray i = replicateM i (fmap read getLine)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句