如果我有两个输入的功能,例如
func x y
如何将函数应用于列表的所有元素,只有一个输入是列表的元素。 所以如果我有列表[1,2,3]和y = 4,我如何使用func使用列表中的每个元素作为x,即
func 1 4
func 2 4
func 3 4
并在列表中返回答案。
仅限前奏函数。
答案 0 :(得分:6)
使用flip
和map
功能的组合:
map (flip func y) x
或者@Jubobs指出,你可以用更直接的方式做到这一点:
map (\x -> func x y) xs
说明:假设您的函数func
具有以下定义:
func :: Int -> String -> Int
func y z = y
现在,你可以使用翻转函数翻转它的参数:
λ> :t (flip func)
(flip func) :: String -> Int -> Int
所以,现在你可以直接将第二个参数应用于它:
λ> :t (flip func "dummy")
(flip func "dummy") :: Int -> Int
现在,您可以使用map
函数将列表的所有元素应用于此函数:
λ> map (flip func "dummy") [1,2,3,4]
[1,2,3,4]