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)]
到目前为止我有这两个功能:
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)]