使用部分
您可以像这样使用 部分:
Prelude> let func x y = x / y
Prelude> map (`func` 2) [2,4,6,8]
[1.0,2.0,3.0,4.0]
查看当您在 backticks 中编写函数时,您会将其变成运算符 - 然后您可以将值插入到左侧或右侧(此处为 x 或 y) .
如果您想替换x,那么您也可以使用普通部分应用程序:
Prelude> map (func 24) [2,4,6,8]
[12.0,6.0,4.0,3.0]
与
相同
Prelude> map (24 `func`) [2,4,6,8]
[12.0,6.0,4.0,3.0]
使用 lambda
当然,如果您根本不喜欢这个,您可以随时使用 lambda:
Prelude> map (\x -> func x 2) [2,4,6,8]
[1.0,2.0,3.0,4.0]
使用列表理解
或者您可以像在 Python 中那样做同样的事情(使用列表推导式):
Prelude> [ func x 2 | x <- [2,4,6,8] ]
[1.0,2.0,3.0,4.0]
好吧,我想我现在想不出其他(简单)的了;)
通过flip 使用部分应用程序
flip 和部分应用程序(我觉得可读性差一些 - 但我觉得有点好笑;):
Prelude> map (flip f 2) [2,4,6,8]
[1.0,2.0,3.0,4.0]
备注/div
由于您在这里只处理了Ints,您可能希望使用div 而不是(/):
Prelude> map (`div` 2) [2,4,6,8]
[1,2,3,4]