разговоры о хаскеле
Jul. 5th, 2015 11:28 amЕсть такой подкаст о распределенных базах данных DevZen, почему-то выдающий себя за подкаст о программировании. Но недавно они сделали исключение, выгнали женщин и детей, пригласили двух замечательных гостей - Романа Чепляку, которого мы все любим за его Cartesian Closed Comics, и Дениса Шевченко, автора книжки "О Haskell по-человечески" - и получился довольно хороший и познавательный выпуск, рекомендую.
Роман рассказал, что в свое время интервьюировал не меньше двух десятков хаскеллистов в Киеве, и практически никто не смог во время интервью решить такую задачку: есть длинный список чисел, надо найти их среднее арифметическое за один проход по списку и О(1) памяти. Занятно.
Роман рассказал, что в свое время интервьюировал не меньше двух десятков хаскеллистов в Киеве, и практически никто не смог во время интервью решить такую задачку: есть длинный список чисел, надо найти их среднее арифметическое за один проход по списку и О(1) памяти. Занятно.
no subject
Date: 2015-07-05 04:34 am (UTC)Неужели такая нехватка общего образования... аяяй.
В Питере бы сразу сказали: "посчитаем моменты".
no subject
Date: 2015-07-05 04:56 am (UTC)no subject
Date: 2015-07-05 04:59 am (UTC)no subject
Date: 2015-07-05 05:17 am (UTC)no subject
Date: 2015-07-05 06:13 am (UTC)Подождите, можно с этого места поподробнее? Т.е. просто foldl' недостаточно, надо ещё про тип функции думать?
no subject
Date: 2015-07-05 07:54 am (UTC)Присоединяюсь к Ивану Ганди.
Казалось бы, foldl' во всех уччебниках для детей есть.
Или хаскеллисты стали умствовать про то, что арифметика нужна длинная, а это уже сразу O(n)... даже без лени и Шлемюэля?
Хотя да, нужно делать энергичный кортеж (количество,сумма), иначе фолдл его только до конструктора форсирует, а внутри будут санки.
no subject
Date: 2015-07-05 07:57 am (UTC)Не про тип, а про строгость потрохов. Нв типе это не скажется.
no subject
Date: 2015-07-05 08:09 am (UTC)Неужели прям ни одного не нашлось, кто бы написал
явную рекурсию со строгим аккумулятором, т.е аналог
явного цикла, как Си?
no subject
Date: 2015-07-05 08:16 am (UTC)А что же тут удивительного?
Чай не императивщики. :) разглядывать ассемблерный код своего поделия не будут.
no subject
Date: 2015-07-05 08:24 am (UTC)Ну или вот взять людей выше по треду, которые путают асимптотику алгоритма со способом интерпретации, хотя способ интерпретации добавляет лишь константу.
no subject
Date: 2015-07-05 08:55 am (UTC)no subject
Date: 2015-07-05 09:30 am (UTC)no subject
Date: 2015-07-05 09:30 am (UTC)no subject
Date: 2015-07-05 09:34 am (UTC)no subject
Date: 2015-07-05 09:53 am (UTC)А требовалось именно кристально чистое понимание того, как накапливаются санки, и последовательности редукции.
no subject
Date: 2015-07-05 10:13 am (UTC)no subject
Date: 2015-07-05 10:37 am (UTC)no subject
Date: 2015-07-05 11:41 am (UTC)no subject
Date: 2015-07-05 11:47 am (UTC)no subject
Date: 2015-07-05 11:51 am (UTC)no subject
Date: 2015-07-05 12:01 pm (UTC)no subject
Date: 2015-07-05 12:15 pm (UTC)Я не знаю, возможно, на собеседовании люди действительно были больше теоретиками-экстремистами, которые верили, что формальное рассуждение о структуре программы лучше, чем профилирование, хотя о профилировании они тоже упоминали.
С другой стороны, надо понимать, куда именно seq и знаки восклицания вставлять, даже когда профайлер показывает конкретное место/структуру.
Но вообще, мне кажется, что проблемы с ленивостью — это проблемы недоразвитости теории, и что в идеале компилятор/tracing vm должны сами определять оптимальный порядок вычисления. А вот отказываться от
ленивостиnon-strictness — это уже луддитство.Жопоболь
Date: 2015-07-05 12:36 pm (UTC)no subject
Date: 2015-07-05 12:40 pm (UTC)no subject
Date: 2015-07-05 12:42 pm (UTC)