我有一个使用 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)
但我想优化它。一旦发现一个不匹配,返回“假”的最佳方法是什么?
我宁愿不抛出异常,但我意识到这可能是最好的答案。我还考虑将匿名函数更改为:
fun acc e1 e2-> if (not acc) then false else (if (e1=e2) then acc else false)