gpt4 book ai didi

list - 如何在 ocaml 中一次遍历两个列表?

转载 作者:行者123 更新时间:2023-12-05 08:27:40 24 4
gpt4 key购买 nike

假设我有以下两个列表: 让 a = [1;2;3;4];; 让 b = [1;3;5;7];;我想要第三个列表,其中包含 a 和 b 的索引总和; IE 让 c = [2;5;8;11];;

问题是我如何仅使用 List.fold_right、List.fold_left 和/或 List.map 中的函数来执行此操作? (这是一道作业题,所以我不允许使用递归函数或@。)

最佳答案

因为这是一道作业题,所以我们真的只能给出提示。

假设您想使用 List.mapList.map 的类型是('a -> 'b) -> 'a list -> 'b list。换句话说,它适用于一个列表。如果你想用它来解决你的问题,你必须找到你自己的方法将你的两个列表组合成一个列表。您不能使用 List.map 来执行此操作,无论您对列表进行什么操作,都可能会为您执行添加操作。所以这看起来不太乐观。

现在假设您想使用 List.fold_leftList.fold_left 的类型是('a -> 'b -> 'a) -> 'a -> 'b list -> 'a。折叠的好处在于它允许您携带 'a 类型的任意累积状态。它允许您在处理列表时对该累积状态执行任意修改。

在我看来,当您使用折叠处理另一个列表时,您可以将其中一个列表视为此累积状态的一部分。

关于list - 如何在 ocaml 中一次遍历两个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32890357/

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