gpt4 book ai didi

functional-programming - "Break"在 OCaml 中不合时宜?

转载 作者:行者123 更新时间:2023-12-05 03:15:55 27 4
gpt4 key购买 nike

我有一个使用 List.fold_left2 来检查列表是否为回文的函数。 (折叠的使用不是可选的:这是一个家庭作业问题。)

let is_p lst =
List.fold_left2 (fun acc e1 e2-> if (e1=e2) then acc else false) true lst (List.rev lst)

但我想优化它。一旦发现不匹配项,立即返回“false”的最佳方法是什么?

我宁愿不抛出异常,但我意识到这可能是最好的答案。我还考虑过将匿名函数更改为:

fun acc e1 e2-> if (not acc) then false else (if (e1=e2) then acc else false)

最佳答案

要么使用异常,要么将折叠“展开”到自定义递归函数中。折叠模式始终遍历完整列表。

一定要对两者进行基准测试,因为异常处理在某些语言中可能是一项昂贵的操作(我不确定 OCaml 是否如此)。

关于functional-programming - "Break"在 OCaml 中不合时宜?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7431760/

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