[英]Apply a function of two inputs to every element in a list - Haskell
[英]How do I apply a function to each element of list, when it has two inputs? Haskell
如果我有两个输入的功能,例如
func x y
如何将函数应用于列表的所有元素,而只有一个输入是列表的元素。 所以如果我有列表[1,2,3]且y = 4,我如何使用func并将列表的每个元素用作x即
func 1 4
func 2 4
func 3 4
并在列表中返回答案。
仅前奏功能。
使用flip
和map
功能的组合:
map (flip func y) x
或者就像@Jubobs指出的那样,您可以以更直接的方式执行此操作:
map (\x -> func x y) xs
说明:假设您的函数func
具有以下定义:
func :: Int -> String -> Int
func y z = y
现在,您可以使用flip函数翻转它的参数:
λ> :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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.