如果我有两个输入的功能,例如
func x y
Run Code Online (Sandbox Code Playgroud)
如何将该函数应用于列表的所有元素,只有一个输入是列表的元素.所以,如果我有列表[1,2,3]和y = 4,我怎么能使用func作为x ie使用列表的每个元素
func 1 4
func 2 4
func 3 4
Run Code Online (Sandbox Code Playgroud)
并在列表中返回答案.
仅限前奏函数.
使用flip和map功能的组合:
map (flip func y) x
Run Code Online (Sandbox Code Playgroud)
或者正如@Jubobs指出的那样,你可以用更简单的方式做到这一点:
map (\x -> func x y) xs
Run Code Online (Sandbox Code Playgroud)
说明:假设您的函数func具有以下定义:
func :: Int -> String -> Int
func y z = y
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用翻转函数翻转它的参数:
?> :t (flip func)
(flip func) :: String -> Int -> Int
Run Code Online (Sandbox Code Playgroud)
那么,现在您可以直接将第二个参数应用于它:
?> :t (flip func "dummy")
(flip func "dummy") :: Int -> Int
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用该map函数将列表的所有元素应用于此函数:
?> map (flip func "dummy") [1,2,3,4]
[1,2,3,4]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
87 次 |
| 最近记录: |