type Anagrams = Map String [String]
buildAnagrams :: IO Anagrams
buildAnagrams = do
list <- readCSV "mydict.csv"
return $ foldr f Map.empty list
where
f :: String -> Anagrams -> Anagrams
f s = Map.insertWith (++) (sort s) [s]
我有这个函数可以构建一个映射来从一个不变的字典文件中查找字谜。我想将地图作为全局变量,因为它需要被其他函数使用。目前,这些函数在 buildAnagrams 上使用 unsafePerformIO,但我知道不建议这样做。整个程序也很慢,因为它要多次构建地图。必须有更好的方法来做到这一点?