Size: a a a

2018 April 02

PK

Pavel Khritonenko in fprog_spb
Я на самом деле спрашивал, в чем проблема классического фолда - пушто он ленивый и тапл будет на каждый элемент создан?
источник

PK

Pavel Khritonenko in fprog_spb
Я не писал на хаскеле ничего
источник

PK

Pavel Khritonenko in fprog_spb
Но вообще конечно... Хаскель - это просто, но сразу такие "детали" вылезают
источник

AI

Andrey Ivanov in fprog_spb
Вычисление идет до WHNF - то есть до минимально необходимых форм. По аккумуляторам в этой задаче нет проверки условий - поэтому их вычисление не форсится а накапливается в длинных ленивых санках (хоть в тупле - ленивом конструкторе типа, хоть в аккумуляторах - при наивной реализации свертки). Хотя при опциях оптимизации типа -О3 Хаскель сам догадывается форсить отдельные аккумуляторы (понимая замысел творца), но с двумя аккумуляторами это может не прокатить, а с ленивым туплом точно не прокатит
источник

AT

Anton Trunov in fprog_spb
Andrey Ivanov
Тогда тем более стоит разобрать этот пример - он наглядно демонстрирует, что если добавить баксы (дважды), то все пойдет гораздо лучше
😂😂😂 Это могло бы стать лучшей первоапрельской шуткой
источник

PK

Pavel Khritonenko in fprog_spb
> [1..1_000_000] |> Seq.fold (fun (sum, count) x -> (sum + x, count + 1)) (0, 0);;
Real: 00:00:00.100, CPU: 00:00:00.093, GC gen0: 6, gen1: 5, gen2: 0
val it : int * int = (1784293664, 1000000)
источник

PK

Pavel Khritonenko in fprog_spb
И это совсем в хаскеле так, да? Помню Роман Чепляка в Bananas and Lenses рассказывал как ловил утечку памяти (space leak) в простейшей херне, которая миллион смсок вроде по экселю отправляет
источник

AI

Andrey Ivanov in fprog_spb
Один апологет Хаскеля как-то писал, что лучший способ добиться неоптимального выполнения программы - писать на ленивом языке как на строгом и наоборот
источник

PK

Pavel Khritonenko in fprog_spb
Я не очень это понимаю, неужели вот тот фолд, который я написал не очевидно, что он должен быть такой?
источник

PK

Pavel Khritonenko in fprog_spb
И что думать тут о том, надо вводить новые типы или нет - это бред?
источник

PK

Pavel Khritonenko in fprog_spb
Вопрос же удобных дефолтов для решения ежедневных задач
источник

АГ

Александр Гранин in fprog_spb
А ваши ежедневные задачи правда требуют итераций по миллионным спискам фолдами? И правда требуют оптимизации? Или это вы так думаете, что они ее требуют?
источник

AI

Andrey Ivanov in fprog_spb
Я писал выше, что иногда при -О3 он догадывается что ты имел в виду - но вообще не должен. Лень по умолчанию: надо форсить - пиши явно. Как в строгих языках - надо ленивость - пиши явно
источник

PK

Pavel Khritonenko in fprog_spb
Да, требуют
источник

PK

Pavel Khritonenko in fprog_spb
Ну просто вон в моем фолде никаких проблем не возникает, а в хаскельном фолде приходится задумываться как работает язык
источник

АГ

Александр Гранин in fprog_spb
В моей ежедневной практике не приходится.
источник

PK

Pavel Khritonenko in fprog_spb
В смысле балк-инсерт из файла в скл с прогрессом - это такая необычная задача?
источник

АГ

Александр Гранин in fprog_spb
Мои задачи не входят в те 10% задач, требующих оптимизации, и мой код обычно не те 10% кода, где и нужно что-то оптимизировать
источник

AI

Andrey Ivanov in fprog_spb
Вообще, если используешь язык, иногда приходится задумываться как он работает, да :)
источник

АГ

Александр Гранин in fprog_spb
Pavel Khritonenko
В смысле балк-инсерт из файла в скл с прогрессом - это такая необычная задача?
В общем-то, не слишком обычная. Shell-скрипт - и вперед
источник