gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 06:39:23 25 4
gpt4 key购买 nike

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) 作为元组传递,而它们应该是单独的柯里化(Currying)参数:map2 f l1 l2

此外,您的函数不处理不同长度的情况(一个列表为空但另一个列表不为空的模式)。在这种情况下,该函数将引发匹配失败,您可能需要引发更专门的错误,例如 invalid_arg "map2" 或其他错误。

关于function - OCaml:函数输入 ('a * ' b -> 'c),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5659201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com