Не согласен я с тем, что ленившись нарушает законы, во всяком случае тут. У нас результат зависит от времени выполнения/порядка выполнения
ну
1. я там написал "lastIsFalse is particularly bad, because its value depends on how that value is consumed" 2. ленивость нарушает законы и без этого, там пара ссылок в конце
А если эмулировать ленивость, то нужно IORef на элемент, а то мне кажется тут можно получить что-нибудь странное типа True,False,True
у меня была такая версия, кажется. Энивей, тут можно получить странное False,False,False, если неправильно список потреблять. Другая альтернатива — потреблять правильно, тогда не получишь
у меня была такая версия, кажется. Энивей, тут можно получить странное False,False,False, если неправильно список потреблять. Другая альтернатива — потреблять правильно, тогда не получишь
Чтобы было ок нужна явная зависимость по данным, тогда не сломаешь но можно зациклиться