Pau*_*aul 7 haskell functional-programming map filter
我觉得这应该是相当明显或容易的,但我无法得到它.我想要做的是将一个函数应用于列表(使用map),但仅在条件被保持时.想象一下,你只想划分偶数的数字:
map (`div` 2) (even) [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)
这将给出[1,1,3,2],因为只有偶数才会将函数应用于它们.显然这不起作用,但有没有办法让这项工作无需编写你可以给地图分离的单独功能?过滤器几乎就在那里,除了我还想保留条件不适用的元素,而不是将函数应用于它们.
谢谢
Cat*_*lus 10
如果您不想定义单独的函数,那么使用lambda.
map (\x -> if (even x) then (x `div` 2) else x) [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)
或者代替地图,列表理解,我认为更具可读性.
[if (even x) then (x `div` 2) else x | x <- [1,2,3,4]]
Run Code Online (Sandbox Code Playgroud)
mapIf p f = map (\x -> if p x then f x else x)
Run Code Online (Sandbox Code Playgroud)