这个函数的类型是什么?

what is the type of this function?

我有 2 个练习要完成,第一个应该从 2 个列表创建元组,完成了。 我的疑惑在第二个练习上

Input
createlist [1,2] ['a','b','c']

Output
[[(1,'a'),(1,'b'),(1,'c')],[(2,'a'),(2,'b'),(2,'c')]]

在第二次练习时,他们问我函数的类型 f:

createlist l1 l2 = map (f l2) l1 
               where f l x = ...

据我理解,这里的f函数只接收一个列表(l2),为什么f函数中有2个参数吼叫?

编辑

谢谢大家的见解,我已经开始工作了。

这里是:

linhaz :: [a] -> [b] -> [[(a,b)]]
linhaz [] _ = []
linhaz _ [] = []
linhaz l1 l2 = map (f l2) l1
                where 
                    f [] x = []
                    f l x = (x,head l):(f (tail l) x)

传递给map的函数只能接受一个参数。但是,可以部分应用具有更多参数的函数(或 curried),在这种情况下,它 returns 一个仅采用您未提供的参数的新函数。

所以如果 f 是一个有 2 个参数的函数(我们称它们为 a 和 b),那么 (f l2) returns 一个新函数,其中 a 已经设置为 'l2' 所以你唯一需要应用的是 b 的值。

所以f是一个二元函数,我们把它转换成一个单元函数传给map。