读取2行输入Haskell

时间:2016-03-13 13:25:20

标签: haskell functional-programming

我已经完成了Haskell程序的编写,但我遇到了I / O及其主要部分的问题。我想阅读以下格式的输入:

10 3
1 4 8

第一个和第二个数字是Ints,第二个数字的数字应该是一个整数列表,[Int]。列表的长度等于第一行的第二个数字。

我有以下代码一次读取一个Int,但是,它只能使它适用于第一行输入。

getInt :: IO Int
getInt = do
    l <- getLine
    return (read l) 

我做错了什么?

1 个答案:

答案 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,我在此处跳过它。

当然,您可能希望根据自己的需要进行调整。