本质上我想做的是:给定一个由元组[(x,[y])]和另一个字符串列表组成的列表[a],我想创建一个包含所有 的新列表,[y]如果x == a这是有意义的,所以如果我有[('a', ['z', 'k', 'x']), ('b', ['z']), ('c', ['y', 'j'])]和['a', 'c'],则结果列表列表是通过函数传递的[['z', 'k', 'x'], ['y', 'j']]。
我想出的解决方案有点荒谬且过于复杂(而且不起作用),但只是为了让您可以看到我一直在考虑的路径类型,我将其发布在下面。
foo ys xs acc = map (\x -> (map (\(a,y) -> if x == a then y:acc else []) ys)) xs
Run Code Online (Sandbox Code Playgroud)
这打印了我想要的东西,但也打印了大量额外的括号,这使得输出超级混乱,毫无疑问,因为我已经破坏了地图函数。有什么建议么?
sorting haskell functional-programming filtering data-structures