У меня есть функция, которая использует 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)