metaclass: (Default)
[personal profile] metaclass
Вот я хаскель использовал только пару раз и практически его не знаю, но в чем проблема с неэнергичным foldl - помню. Про то, что нужны банг-паттерны внутри тупла - краем уха слышал, но не вникал.
Стеб же на эту тему людей, которые слышали звон, да не знают, где он, меня очень сильно огорчает.
Ладно, айсед критикует - он хотя бы писал на этом и понимает, о чем речь идет. А так - это выглядит как "разработчики на клиппере критикуют SQL за то, что теория множеств".

Date: 2015-07-10 11:39 am (UTC)
From: [identity profile] aamonster.livejournal.com
Учитывая "Avoid Success at All Costs" - огорчаться не следует.

Интереснее другое: пока в обсуждениях я видел всего то ли 1, то ли 2-х человек, для которых правильное решение - очевидно и иначе не написать: "Если хоть чуть-чуть писал на хаскелле, такое делается на автомате, даже на бумаже. Безусловный рефлекс -- аккумулятор (что-то делаем, а результат используется только в конце) -- ставим bang pattern." (c) [livejournal.com profile] vshabanov

Date: 2015-07-10 01:57 pm (UTC)
From: [identity profile] dr-cha0s.livejournal.com
Можешь третьего записать. BTW, Johan Tibbel в своих code covnventions писал, что аккумутяторы должны быть строгими по умолчанию. https://github.com/tibbe/haskell-style-guide/blob/master/haskell-style.md
Edited Date: 2015-07-10 02:02 pm (UTC)

Date: 2015-07-10 02:17 pm (UTC)
From: [identity profile] aamonster.livejournal.com
Хорошо. Значит, правильно учить можно, но пока сложно (иначе процент был бы повыше).
Подождём.

Просто если есть стиль, позволяющий избегать таких ошибок, то учить без него - всё равно что учить людей на императивных языках считать факториал рекурсивно. А книжек, которые учат писать сразу в нужном стиле, я пока вроде не видел (UPD: надо снова взяться за Real World Haskell) - видел лишь статьи типа "а давайте посмотрим профайлером и решим, где добавить строгости".

UPD: Хотя, конечно, не так красиво получается. Академический язык, в котором всё лениво и (благодаря этому) единообразно, if и иже с ним - обычные функции, а не специальные формы - это прелесть. Но реальный мир вносит свои коррективы...
Edited Date: 2015-07-10 02:24 pm (UTC)

Date: 2015-07-10 04:18 pm (UTC)
From: [identity profile] dr-cha0s.livejournal.com
Ленивость - это особенность. Всё. Как и отсутствие GC в C++.
Я за 2 года написания кода в продакшн на прикол с ленивостью напоролся ли тогда когда передал санк с эксепшеном в другой тред, где не предусматривалась обработка эксепшена. Мой пример конечно не показатель.

Date: 2015-07-11 11:40 pm (UTC)
From: [identity profile] lomeo.livejournal.com
К сожалению, не всё так просто. [livejournal.com profile] vshabanov, конечно, понимал о чём говорил, но фраза звучит так, как будто мы ставим bang над аккумулятором. Это не так — в этом случае у нас просто WHNF, а надо, чтобы энергично считались потроха. Например, в предлагаемой задаче надо ставить bang и над той частью аккумулятора, что собирает сумму, и над той, что считает кол-во элементов.

Да, это действительно "безусловный рефлекс". К сожалению, я не видел этих советов в явном виде в учебниках.

Date: 2015-07-12 06:42 am (UTC)
From: [identity profile] aamonster.livejournal.com
Я таки нашёл. В Real World Haskell. Вот только это 20-я, что ли, глава - тогда как такие вещи должны относиться к основам (если, конечно, использовать язык как инструмент, а не как красивую математическую игрушку).

Date: 2015-07-12 10:49 am (UTC)
From: [identity profile] thesz.livejournal.com
Хаскель приколен тем, что можно сделать очень много до того, как такие проблемы станут насущными.

Мой опыт (с 1998 года) говорит именно об этом.

Date: 2015-07-14 08:05 am (UTC)
From: [identity profile] lomeo.livejournal.com
Интересно, спасибо! К сожалению, я RWH не читал внимательно (пролистал).

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Nov. 1st, 2025 07:55 pm
Powered by Dreamwidth Studios