filter p [100000 ,99999..])
where p x = x mod 3892 == 0
Добрый день. Есть факт, что благодаря ленивости хаскеля здесь вернется управление к head сразу как только найдется хоть 1 элемент который удовлетворяет предикат (короче, как только появится хоть 1 элемент)
но у меня вопрос, откуда хаскель знает, что нужно вернуть управление к head как только в списке появился 1 элемент?
подставьте вместо функций head, filter и p тела соответствующих функций и упростите
если кратко, то всё дело в ленивой стратегии вычислений
вот из лени и узнает. почитайте больше про ленивую стратегию вычислений и задумки (thunk)
вот тут можно пошагово посмотреть как ленивость работает, там может и тул по ссылке можно будет собрать и посмотреть как фильтр будет выполняться https://www.well-typed.com/blog/2017/09/visualize-cbn/
Обсуждают сегодня