到目前为止,我有这两个功能:
splitLines :: String -> [[String]]
splitLines splitLinesStr = splitWords (lines splitLinesStr)
splitWords :: [String] -> [[String]]
splitWords splitWordStr = map words splitWordStr
两者都有助于完成步骤1-3。但是我不知道如何在列表中创建一个int元组和一个列表(如步骤4所述)。怎么会这样做?
阶段1:原始输入,例如
"a&b b c.\na dd\n"
阶段2:原始输入,分为行列表,如
["a&b b c.", "a dd"]
阶段3:行列表,进一步拆分为单词列表列表,如
[["a", "b", "b", "c"], ["a", "dd"]]
阶段4:列表列表,“tupled”以便将行号附加到它们,如
[(1,["a", "b", "b", "c"]), (2,["a", "dd"])]
阶段5:单词列表(全部位于顶层),其中每个单词与其行号配对,如
[(1,"a"), (1,"b"), (1,"b"), (1,"c"), (2,"a"), (2,"dd")]
答案 0 :(得分:1)
提示1:您可以使用以下语法生成无限的整数列表:
[1..]
提示2:有一个名为zip
的函数具有非常具有暗示性的类型:
zip :: [a] -> [b] -> [(a, b)]