我需要从第4阶段到第5阶段的帮助。我不确定Haskell函数是否接受每个元素并将其置于元组中。也许我已经手动完成了这个,我也不知道该怎么做。
到目前为止,这是我的功能:
splitLines :: String -> [[String]]
splitLines splitLinesStr = splitWords (lines splitLinesStr)
splitWords :: [String] -> [[String]]
splitWords splitWordList = map words splitWordList
tupleNums tupleNumList = zip [1..] tupleNumList
第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 :(得分:2)
我们可以设计一个函数来将第4阶段列表中的每个元素都这样:
cluster.link.enabled=true
然后我们可以使用helper :: (Int, [a]) -> [(Int, a)]
helper (num, xs) = zip (repeat num) xs
:
concatMap :: (a -> [b]) -> [a] -> [b]
就是这样。这是一个例子:
fourToFive :: [(Int, [a])] -> [(Int, a)]
fourToFive = concatMap helper
答案 1 :(得分:1)
您所要做的就是应用 Dim TestMe = CInt(Val(New Text.StringBuilder((From ch In "123abc123".ToCharArray Where IsNumeric(ch)).ToArray).ToString))
和map
的组合。 concat
中的演示:
ghci
请注意,我使用了两个λ> let x = [(1,["a", "b", "b", "c"]), (2,["a", "dd"])]
λ> map (\(y,z) -> map (\a -> (y,a)) z) x
[[(1,"a"),(1,"b\"),(1,"b"),(1,"c")],[(2,"a"),(2,"dd")]]
函数。外map
将遍历map
的元素。 x
(它是一个元组)的每个元素都由x
模式匹配。我们知道(y,z)
是一个列表。因此,我们使用另一个z
来遍历列表map
。这个内部z
函数将返回map
元组,其中(y,a)
是列表a
中遍历的当前元素,z
是第一个元素元组。
现在您需要做的就是在结果列表中应用y
函数:
concat