两个lambda一起起作用是什么意思

时间:2018-07-11 01:07:53

标签: haskell lambda

这是我的演讲笔记中的一个例子

ap_List :: [a -> b] -> [a] -> [b]
-- ap_List [] as = []
-- ap_List (f:fs) as = map f as ++ ap_List fs as
ap_List fs as = map2_List (\f -> \a -> f a) fs as 
-- E.g., ap_List [f,g] [1,2,3] = [f 1, f 2, f 3, g 1, g 2, g 3]
--                             = map f [1,2,3] ++ (map g [1,2,3] ++ [])

在线

ap_List fs as = map2_List (\f -> \a -> f a) fs as 

我不明白(\f -> \a -> f a)代表什么。通常,lambda函数后跟一些输入元素。但是在此之后是另一个lambda函数。谁能解释这是什么意思?谢谢!

1 个答案:

答案 0 :(得分:1)

这是已咖喱功能。它以f作为参数,并返回以a作为参数并返回f a的函数。这样可以有效地模拟具有两个参数的函数。

请注意,特定的lambda函数与运算符$相同。