Bes*_*eri -2 haskell functional-programming
我正在尝试获取一个程序,该程序首先从列表中过滤出与条件匹配的元素,然后根据也作为参数接收的函数映射元素。
filterMap :: (a -> b) -> (a -> Bool) -> [a] -> [b]
Run Code Online (Sandbox Code Playgroud)
例如:
filterMap (+1) even [1..10] == [3,5,7,9,11]
filterMap (2^) (/=0) [0,1,0,2] == [2,4]
Run Code Online (Sandbox Code Playgroud)
您似乎忘记了在尝试时指出问题本身。
但是,以下是您正在寻找的一些版本:
filterMap :: (a->b) -> (a -> Bool) -> [a] -> [b]
filterMap mapping pred lst = map mapping (filter pred lst)
Run Code Online (Sandbox Code Playgroud)
filterMap mapping pred lst = map mapping $ filter pred $ lst
Run Code Online (Sandbox Code Playgroud)
filterMap mapping pred = map mapping . filter pred
Run Code Online (Sandbox Code Playgroud)
在这里,我们摆脱了双方的争论(所谓的无点风格),并说我们的函数是一个过滤pred和映射的序列,嗯,mapping。