小编use*_*194的帖子

用对映射

我是Haskell的新手,我一直试图在列表中映射每对的第一项.

显然这有效:

map :: (a -> b) -> [a] -> [b]
map f xs = [f x | x <- xs]
Run Code Online (Sandbox Code Playgroud)

但是我该如何让它发挥作用呢

map :: (a -> b) -> [(a, Int)] -> [b]
Run Code Online (Sandbox Code Playgroud)

我只是想让它暂时忽略Int值并将f应用到第一个例子中.我现在已经尝试了很多年,所以感谢任何帮助.

haskell

2
推荐指数
1
解决办法
164
查看次数

Haskell - 希望文件中的全局变量不会改变

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]
Run Code Online (Sandbox Code Playgroud)

我有这个函数,它构建一个映射来从字典文件中查找anagrams,该文件不会改变.我希望将地图作为全局变量,因为它需要被其他函数使用.目前函数在buildAnagrams上使用unsafePerformIO,但我知道不建议这样做.整个程序也很慢,因为它多次构建地图.必须有更好的方法来做到这一点?

haskell unsafe-perform-io

2
推荐指数
1
解决办法
167
查看次数

标签 统计

haskell ×2

unsafe-perform-io ×1