= match l with
[] -> true
| h :: t -> f h && forall f t
То будет ли у нас сотворена хвостовая рекурсия? По идее должна, ведь мы знаем после выполнения f h будем ли мы дальше выполнять или нет, и сам результат этого выполнения f h при продолжении нам не важен.
Да, будет, из-за того, что && "fail-fast". Если определить let (&&) = (&&), например, то вызов перестанет быть хвостовым.
Обсуждают сегодня