[英]how to apply function to every element in a list in Haskell?
I want to apply resolve_on to every element in list c1, like 我想将resolve_on应用于列表c1中的每个元素,例如
for(Char c:c1){
resolve_on c c1 c2;}
So how can I do this using map function? 那么我该如何使用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
When in doubt, start with list comprehensions: 如有疑问,请从列表理解开始:
-- 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
This is indeed a map
, 这确实是一张
map
,
= map (\c -> resolve_on c c1 c2) c1
This uses a lambda (ie, unnamed) function , receiving one argument named c
. 这使用lambda (即,未命名) 函数 ,接收一个名为
c
参数。
The do
code in the comments would also work. 注释中的
do
代码也将起作用。 It is in do
notation, and is equivalent to the list comprehension. 它以
do
表示,等效于列表理解。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.