Haskell:使用元组和预先存在的嵌套列表

Haskell: Using Tuples and preexisting nested lists

到目前为止我有这两个功能:

splitLines :: String -> [[String]]
splitLines splitLinesStr = splitWords (lines splitLinesStr)

splitWords :: [String] -> [[String]]
splitWords splitWordStr = map words splitWordStr

两者都有助于完成第 1-3 步。但是我不知道如何创建一个 int 的元组和一个列表中的一个列表(如第 4 步所述)。怎么做到这一点?


第一阶段:原始输入,例如

"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")]

提示 1:您可以使用以下语法生成无限的整数列表:

[1..]

提示2:有一个叫做zip的函数,它的类型很有启发性:

zip :: [a] -> [b] -> [(a, b)]