Комментарии 6
$! и бангпаттерны выходят за рамки плана статьи? Последние грабли со small можно было изящно написать
let small' = fst $! (small, large)…
let small' = fst $! (small, large)…
0
Большое спасибо за перевод и ссылку на оригинальную статью. Все понятно, на пальцах, вы не зря старались. В этом аспекте чувствуется отличие Скалы от Хаскеля.
0
Пара замечаний по терминологии:
В языках с автоматической или ручной сборкой мусора под утечкой памяти подразумевается систематическая и необратимая утеря ссылок на созданные объекты. В приведенном же примере можно говорить о нерациональном использовании памяти, но после завершения вычислений вся потраченная память будет возвращена сборщиком мусора, так что я бы не стал употреблять здесь слово «утечка».
В языках с автоматической или ручной сборкой мусора под утечкой памяти подразумевается систематическая и необратимая утеря ссылок на созданные объекты. В приведенном же примере можно говорить о нерациональном использовании памяти, но после завершения вычислений вся потраченная память будет возвращена сборщиком мусора, так что я бы не стал употреблять здесь слово «утечка».
граф, не находящийся в WHNF, называется не вычисленным выражениемЗдесь грамматическая ошибка в определении может сломать парсер читателя или ввести его в заблуждение. Надо назвать эту сущность «невычисленным выражением» или, возможно, точнее будет «недовычисленное выражение».
+2
Хорошая статья по ленивым вычислениям!
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Как работают ленивые вычисления