我需要在 Haskell 中过滤带有掩码的列表。
它将函数应用于掩码列表的元素和数据列表中的相应元素,如果函数返回true,则数据列表中的相应元素包含在返回的列表中。
例如,假设我想过滤掉大于掩码项的数据项:
filtermask (\m d -> d > m) [1, 5, 7] [5, 6, 7]→[5, 6]
这个问题的任何可能的解决方案都会很棒。到目前为止,我只做过
filtermask f m d = f m d
返回 TRUE
编辑:解决方案,感谢 Tikhon 的帮助:
filtermask f [] [] = []
filtermask f (fm:rm) (fd:rd)
|f fm fd = fd:filtermask f rm rd
|otherwise = filtermask f rm rd