如何将函数应用于 Haskell 列表中的每个元素?

how to apply function to every element in a list in Haskell?

我想将 resolve_on 应用于列表 c1 中的每个元素,例如

for(Char c:c1){
resolve_on c c1 c2;}

那么我如何使用地图功能来做到这一点?

resolvents :: [Char] -> [Char] -> [[Char]]
resolvents c1 c2 =  map (//what should I do) c1

resolve_on :: Char -> [Char] -> [Char] -> [Char]
resolve_on c c1 c2

如有疑问,请从列表理解开始:

-- for (Char c) in c1:                     do { c <- c1
--   yield (resolve_on c c1 c2)               ; return (resolve_on c c1 c2) }

resolvents c1 c2 = [ resolve_on c c1 c2 | c <- c1 ]

    -- read it:    a list of
    --              (resolve_on c c1 c2)
    --                                  for        -- or: for every
    --                                    c
    --                                      in c1

这确实是一个map,

                 = map (\c -> resolve_on c c1 c2) c1

这使用 lambda(即未命名)函数,接收一个名为 c.[=16= 的参数]

评论中的do代码也可以。它采用do表示法,等同于列表理解。