OCaml:函数输入(\'a *\'b->\'c)

|
let rec 

map2 (f : \'a * \'b -> \'c) (l1 : \'a list) (l2 : \'b list) : \'c list =
  match (l1,l2) with
    | ([], []) -> []
    | (x::l1),(y::l2) -> f (x, y)::(map2 f (l1, l2))
它正在返回:
Error: This expression has type \'a list * \'a list
   but an expression was expected of type \'a list
我在这里做错了什么?     
已邀请:
错误是
map2 f (l1, l2)
(错误位置会告诉您)。您将
(l1, l2)
作为元组传递,而它们应该是单独的咖喱参数:
map2 f l1 l2
。 同样,您的函数不能处理不同长度的情况(一个列表为空但另一列表为空的模式)。在这种情况下,该函数将引发匹配失败,您可能需要引发更专业的错误,例如
invalid_arg \"map2\"
之类的东西。     

要回复问题请先登录注册