И вот этот трюк как раз только в хаскеле и доступен, потому что без ленивости и чистоты - вот это сворачивание операций fold и unfold не всегда корректно
Насколько я помню это приводит к новому классу проблем - space leak я правда не пересекался так на хаскеле только хеллуовордил. Это большая проблема?
Насколько я помню это приводит к новому классу проблем - space leak я правда не пересекался так на хаскеле только хеллуовордил. Это большая проблема?
Если быть неаккуратным, можно соорудить себе серьёзный space leak. Но: 1. GHC в целом умеет иногда это оптимизировать 2. Если быть аккуратным и отменять ленивость, где не надо, то это фиксиццо
Насколько я помню это приводит к новому классу проблем - space leak я правда не пересекался так на хаскеле только хеллуовордил. Это большая проблема?
Ну в сообществе с ними работать более-менее умеют. То есть я в живую ни разу не ловил, но я следую гайдлайнам и вообще стараюсь поменьше ленивость юзать.
Ну в сообществе с ними работать более-менее умеют. То есть я в живую ни разу не ловил, но я следую гайдлайнам и вообще стараюсь поменьше ленивость юзать.
Ну есть, например, вот такой простой пример
bad :: [Int] -> Int -> Int bad [] c = c bad (_:others) c = bad others $ c + 1
И если у тебя куча мелких аллокаций (как при использовании персистетных коллекций и бывает), то вот эта цена аллокации через системный аллокатор сыграет ощутимую роль