Haskell:用元素和列表连接一个元组列表:[[a,[b])]-> [[a,b)]

odd*_*ddi 3 haskell split tuples concat list

我想在一个元素和字符串元组的列表中合并,每个char与该元素一起。

例如:[[True,“ xy”),(False,“ abc”)]-> [[True,'x'),(True,'y'),(False,'a'),(False, 'b'),(False,'c')]

我确实有解决方案,但我想知道是否有更好的解决方案:

concatsplit :: [(a,[b])] -> [(a,b)]
concatsplit a = concatMap (\(x,y)-> concatsplit' (x,y)) a

concatsplit' :: (a,[b]) -> [(a,b)]
concatsplit' y = map (\x -> ((fst y),x)) (snd y)
Run Code Online (Sandbox Code Playgroud)

Lor*_*nzo 8

为什么不进行简单的列表理解?

列表推导通常可以完成高阶函数,而且我认为,如果您不需要更改数据而只需要“解压缩”数据,它们就很清楚了。这是一个工作示例:

concS :: [(a,[b])] -> [(a,b)]
concS ls = [(a,b) | (a,x) <- ls, b <- x]
Run Code Online (Sandbox Code Playgroud)