当它有两个输入时,如何将函数应用于列表的每个元素?哈斯克尔

时间:2014-12-17 12:29:36

标签: list haskell

如果我有两个输入的功能,例如

func x y

如何将函数应用于列表的所有元素,只有一个输入是列表的元素。 所以如果我有列表[1,2,3]和y = 4,我如何使用func使用列表中的每个元素作为x,即

func 1 4
func 2 4
func 3 4

并在列表中返回答案。

仅限前奏函数。

1 个答案:

答案 0 :(得分:6)

使用flipmap功能的组合:

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]