繁体   English   中英

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

[英]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

并在列表中返回答案。

仅前奏功能。

使用flipmap功能的组合:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM