Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, Gaperton, Вы писали:
S>>> Там вроде бы yield придумали в версии 2. Специально для ленивых циклов.
G>>Сомнительно. Если этот yield будет иметь ленивую семантику, это будет означать неопределенный порядок вычислений. Что не является граблями только в случае, если программа состоит из чистых функций (если побочные эффекты отсутствуют). Вот собственно и все — ленивые вычисления безопасны только при отсутствии побочных эффектов, а это и есть основная отличительная характеристика ФЯ.
S>Ну, я так понял, что нифига там ленивые вычисления не безопасны. Надо самому следить за порядком вычислений, либо за отсутствием побочных эффектов у yield. Yield всего лишь облегчает реализацию итераторов, которые и в императивном случае вполне ленивы.
Т.е. ничего практически строгого не получается и весь груз ответственности ложится на программера, а не на компайлер?
Что-то как-то такое решение мне не кажется особо хорошим...