这是我的演讲笔记中的一个例子
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函数。谁能解释这是什么意思?谢谢!
答案 0 :(得分:1)
这是已咖喱功能。它以f
作为参数,并返回以a
作为参数并返回f a
的函数。这样可以有效地模拟具有两个参数的函数。
请注意,特定的lambda函数与运算符$
相同。