我已经完成了Haskell程序的编写,但我遇到了I / O及其主要部分的问题。我想阅读以下格式的输入:
10 3
1 4 8
第一个和第二个数字是Ints,第二个数字的数字应该是一个整数列表,[Int]。列表的长度等于第一行的第二个数字。
我有以下代码一次读取一个Int,但是,它只能使它适用于第一行输入。
getInt :: IO Int
getInt = do
l <- getLine
return (read l)
我做错了什么?
答案 0 :(得分:1)
您应该能够通过以下方式获取此处显示的数据:
readData :: IO (Int, [Int])
readData = do
[nr, _] <- map read . words <$> getLine
nrs <- map read . words <$> getLine
return (nr,nrs)
这将读取两行并返回10
作为第一个组件,[1,4,8]
作为元组的第二个组件,如果您在示例中读到
由于第一行中的第二个数字只是返回列表的length
,我在此处跳过它。
当然,您可能希望根据自己的需要进行调整。