Haskell使用映射查找并替换列表中的值



我有一个单字符列表,如:[["a"],["b"],["c"],["d"]],我有一个映射,例如[("a", "A"), ("b", "B")],我想在列表中找到与映射键匹配的元素,并用该键的映射值替换列表值,并删除所有剩余的未更改的单个字符。

例如,从上面的例子中,如果我有[["a"],["b"],["c"],["d"]]的列表和[("a", "A"), ("b", "B")]的映射,我想得到一个这样的列表:["A", "B"]

由于我对Haskell一无所知,所以任何帮助都将不胜感激:(

您可以将lookupcatMaybes:组合

import Data.Maybe
list :: [[String]]
list = [["a"],["b"],["c"],["d"]]
replacements :: [(String, String)]
replacements = [("a", "A"), ("b", "B")]
replaced :: [String]
replaced = catMaybes . map (x -> lookup x replacements) . concat $ list
main :: IO ()
main = print replaced -- ["A", "B"]