Size: a a a

Compiler Development

2021 May 02

B

Brenoritvrezorkre in Compiler Development
Хотя чего там, математика интересных логик не использует, только классическую с шагом влево-вправо для любителей
источник

А⚙

Антон ⚙️ in Compiler Development
Композируется лучше
источник

AT

Alexander Tchitchigi... in Compiler Development
Что в жадном языке можно вычислять лениво -- это распространённое заблуждение среди тех, кто не пробовал. 😊 По факту очень быстро выясняется, что в энергичном языке ленивость пропадает ровно в тот момент, когда она становится критически нужна.
источник

к

кана in Compiler Development
не понимаю, почему заблуждение
источник

к

кана in Compiler Development
если вместо всех значений использовать лямбду из юнита ВЕЗДЕ, то выйдет не ленивость без мемоизации разве?
источник

AT

Alexander Tchitchigi... in Compiler Development
И кто же так делает? 😉
источник

к

кана in Compiler Development
никто, но можно же!
источник

AT

Alexander Tchitchigi... in Compiler Development
Учтите, между делом, что это потребует переписывания всех библиотек. 😉
источник

AT

Alexander Tchitchigi... in Compiler Development
Ну а в Haskell можно везде аннотации строгости расставить. Более того, для ленивых есть StrictData. 😄
источник

AT

Alexander Tchitchigi... in Compiler Development
В общем, потому и заблуждение, что как только хочется использовать чужие библиотеки совместно со своим ленивым кодом в энергичном языке, очень быстро все вычисления становятся энергичными.
источник

KR

K R in Compiler Development
Можно ли утверждать, что в 99% случаев ленивость нужна для производительности?
источник

B

Brenoritvrezorkre in Compiler Development
)))((((
источник

KR

K R in Compiler Development
А за счёт чего они становятся энергичными? Потому, что вы либо передаёте callbackи или функции в библиотечный код?
источник

AT

Alexander Tchitchigi... in Compiler Development
Можно утверждать, что в 99% случаев пофиг на производительность.
источник

AT

Alexander Tchitchigi... in Compiler Development
За счёт того, что энергичный код форсит задумки.
источник

AT

Alexander Tchitchigi... in Compiler Development
Ну и вообще нет в наличии достаточно ленивых структур данных. Tail-lazy streams форсятся как только ты начинаешь делать с ними хоть что-то осмысленное, а не просто так держать.
источник

KR

K R in Compiler Development
Тогда зачем вам ленивость?

Ленивость - это возможность не делать какие-то вещи. Соответственно, либо эти вещи происходят в чистом коде, тогда это просто увеличение производительности (при работе на десктопе), либо они происходят в коде с побочными эффектами (тогда мы меньше "пачкаем систему") - это тоже производительность, но других подсистем из окружения (make не пересобирает какие-то части проекта => тесты на них не надо перегонять).
источник

AT

Alexander Tchitchigi... in Compiler Development
Как уже отметили, ленивость не для производительности, а для композабельности. Ровно так же, как и GC. Ещё одна штука, которую не нужно решать заранее и согласовывать между модулями.
источник

KR

K R in Compiler Development
Ну будет всё энергично. Какие проблемы?
источник

AT

Alexander Tchitchigi... in Compiler Development
Я уже писал, какие. 🤷‍♀
источник