我有 Data.Map (freqMap),它看起来像:
"SO" -> "10"
"OM" -> "20"
...
所以每两个字母我都会映射一些值。
我有一个字符串列表:
["SO", "OM", "ME", "ET" ...]
我需要将此列表转换为另一个列表:
["10", 20", ...]
其中每个元素都是我的地图(freqMap)中的一个值。
我使用递归创建了解决方案:
score_ngram :: [String] -> Map.Map String String -> [Int] -> [Int]
score_ngram [] scores result = result
score_ngram ngrams scores result = score_ngram (tail ngrams) scores (result ++ [value])
where value = case (Map.lookup (head ngrams) scores) of
Just v -> read v :: Int
Nothing -> 0
但我只是想知道是否可以使用地图功能获得它?
像这样的东西:
map (Map.lookup element_of_list freqMap) ["SO", "OM", "ME", "ET" ...]