Vin*_*hou 0 lambda haskell map-function
我想将resolve_on应用于列表c1中的每个元素,比如
for(Char c:c1){
resolve_on c c1 c2;}
Run Code Online (Sandbox Code Playgroud)
那么我怎样才能使用map函数呢?
resolvents :: [Char] -> [Char] -> [[Char]]
resolvents c1 c2 = map (//what should I do) c1
resolve_on :: Char -> [Char] -> [Char] -> [Char]
resolve_on c c1 c2
Run Code Online (Sandbox Code Playgroud)
如有疑问,请从列表推导开始:
-- 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
Run Code Online (Sandbox Code Playgroud)
这确实是一个map,
= map (\c -> resolve_on c c1 c2) c1
Run Code Online (Sandbox Code Playgroud)
这使用lambda(即未命名的)函数,接收一个名为的参数c.
do评论中的代码也可以使用.它是do表示法,相当于列表理解.