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)
列表推导通常可以完成高阶函数,而且我认为,如果您不需要更改数据而只需要“解压缩”数据,它们就很清楚了。这是一个工作示例:
concS :: [(a,[b])] -> [(a,b)]
concS ls = [(a,b) | (a,x) <- ls, b <- x]
Run Code Online (Sandbox Code Playgroud)