填写没有答案的学习指南。我需要在一行中使用map将函数列表(fs)中的每个函数应用于值(v)
applyEach :: [a->b] -> a -> [b]
applyEach fs v = map (\v -> fs v) fs
据我所知。我知道我不能将fs应用于值,因为fs是函数列表,但是我不知道如何使用列表中的每个函数
您可以使用$
(f $ x = f x
):
Prelude> let fs = [(+1), (+2)]
Prelude> map (\f -> f 2) fs
[3,4]
Prelude> map ($ 2) fs
[3,4]
之所以有效,($ x)
是因为它的一部分等效\f -> f $ x
于\f -> f x
(地图中的函数)
或者,您可以导入Control.Applicative
和使用<*>
listApplicative
实例:
Prelude Control.Applicative> let fs = [(+1), (+2)]
Prelude Control.Applicative> map (\f -> f 2) fs
[3,4]
Prelude Control.Applicative> fs <*> [2]
[3,4]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句