如何在Haskell中获得有限的输入数量

时间:2017-10-06 13:36:57

标签: list haskell

我是Haskell的新手。 让我说我的程序想要根据这种输入模式计算一些东西:

a1 b1 c1
a2 b2 c2
...
16 b6 c6

输入包含6行,每行包含3个数字 我希望将数据作为[(整数,整数,整数)],但在进行计算之前将列表的长度限制为仅为6。

我怎么能这样做?另外,我如何从[(整数,整数,整数)]

获得长度

感谢您的帮助

1 个答案:

答案 0 :(得分:6)

这有三个步骤:

  1. 阅读6行
  2. 将每一行分成(希望是三个)部分
  3. 转换为所需的结果
  4. 下面是一些示例代码:

    input = do
      lines <- sequence $ take 6 $ repeat readLn
      let table = words <$> lines
      return [(a, b, c) | [a,b,c] <- table]
    

    这会给input :: IO [(String, String, String)],但我相信你可以修改它以给你你想要的东西。