
Alexander
31.01.2018
15:19:10
а не, не зло, в последних версиях он одумался (или не автор уже)

Denis
31.01.2018
15:19:43
он вроде уже ничего не мейнтейнит толком

Александр
31.01.2018
15:20:59

Alexander
31.01.2018
15:22:06

Google

Александр
31.01.2018
15:22:08
Но если плюсовики вылечиваются со временем, то у хаскеллистов этот вид недуга вообще имеет тенденцию к ухудшению.

Denis
31.01.2018
15:22:24

Alexander
31.01.2018
15:22:57
аргумент, наверное в том, что плохо делать так чтобы bus factor был близок к 1

Denis
31.01.2018
15:23:00
потому что спич о какой-то произвольной черте, выше которой все сложно и комплексити

Александр
31.01.2018
15:23:06
*понимать

Alexander
31.01.2018
15:23:19
причем где 1 относится к любому человеку из продвинутых в команде

Denis
31.01.2018
15:23:28
bus factor ортогонален typeful дизайну
я же выше говорил, если команде нормально, то все в порядке

Alexander
31.01.2018
15:23:49
и при том что введение нового человека может быть дорого

Александр
31.01.2018
15:23:51

Alexander
31.01.2018
15:24:07
с haskell наверное одна из важнейших

Denis
31.01.2018
15:24:10
это наистандартнейшая метрика

Google

Denis
31.01.2018
15:24:25
я не согласен с тем что с haskell важнее
возьми какой-нибудь скриптовый язык
там bus factor == 1 еще хуже

Тёма
31.01.2018
15:24:47
Ребят, а кстати как сейчас у ghc обстоят дела с typed holes? Ещё не так круто как в Агде? Поддержку в емакс не завезли?

Александр
31.01.2018
15:24:52

Тёма
31.01.2018
15:24:55
Я слоупок просто

Denis
31.01.2018
15:24:59
код становится вообще иммутабельным

Alexander
31.01.2018
15:25:21
это да

Denis
31.01.2018
15:25:41

Alexander
31.01.2018
15:25:56
но в общем скорее всего смысл утверждений в том, что неожиданно на ровном месте человеку становится сложно разбираться

Denis
31.01.2018
15:26:00
поэтому любые решения хороши, если команда в них сечет

Alexander
31.01.2018
15:26:15
в итоге возрастает или уровень требуемый от соискателей или цена введения нового человека

Denis
31.01.2018
15:26:41
ну это то безусловно
но typeful дизайн обычно дает какие-то бенефиты, позволяет убрать какие-то классы распостраненных ошибок
или дает более общий код
тут надо оценивать плюс подхода против его минусов в каждом конкретном случае
у меня есть отличный пример из нашей кодобазы

Alexander
31.01.2018
15:27:58
accidental - тут конечно субьективно, но в целом насколько много решает по сравнению с тем насколько хуже писать код
спорить там тяжело, особенно не видя кодобазы друг друга

Александр
31.01.2018
15:28:15

Google

Alexander
31.01.2018
15:28:32
мало ли чего там в Касперском (если я прав) или IOHK начудили
ну типы <-> корректность

Denis
31.01.2018
15:29:03
в общем у нас мозгодрыжни всякие штуки используются, но валюту в типе денежных значений мы не осилили
т.к. цена слишком высока

Александр
31.01.2018
15:29:10

Denis
31.01.2018
15:29:34
при этом что-то совершенно чудовищное на вид, вроде schematic, юзается повсеместно

Alexander
31.01.2018
15:29:38
@cblp_su - Касперский, и большая часть Serokell тут есть

Denis
31.01.2018
15:30:30

Alexander
31.01.2018
15:30:42
хотя может и не большая, но человека 4 было

Александр
31.01.2018
15:30:56

Alexander
31.01.2018
15:31:09
Serokell ~= IOHK
это разные фирмы, но Serokell пишут очень много (весь) Haskell код

Denis
31.01.2018
15:31:47
serokell ⊂ iohk
я починил

Yuriy
31.01.2018
15:31:51
ничего мы не чудили

Александр
31.01.2018
15:32:44

Alexander
31.01.2018
15:33:35
сделать accidental complexity объективной метрикой тяжело

Denis
31.01.2018
15:34:11
оказывается что дофига всего нуждается в корректном софте
насколько это важно для каждого конкретного проекта - вопрос

Google

Alexander
31.01.2018
15:34:36
ой не парься, в мед софте проблемы начиная с физ модейлей бывают

Denis
31.01.2018
15:34:51
на самолетах тоже не летайте кстати
и в больницы не ходите

Александр
31.01.2018
15:35:20
сделать accidental complexity объективной метрикой тяжело
Объективных метрик, конечно, здесь не придумать. Или если придумать, то получится какая-нибудь "цикломатическая сложность". Но нужно стремиться к тому, чтобы код бизнес-сценариев был понятен тем, кто работает с предметной областью.

Denis
31.01.2018
15:35:57
я никогда не забуду как тулинг мне мерял цикломатическую сложность по количеству веток в case
чем больше веток, тем выше сложность была!

Александр
31.01.2018
15:36:09

Denis
31.01.2018
15:36:19
надо в отдельную функцию выделять, говорит!

Admin
ERROR: S client not available

Denis
31.01.2018
15:37:34
поэтому и дизайн этих частей логично представлять разным

Александр
31.01.2018
15:38:29

Alexander
31.01.2018
15:41:12
хм.. ghc стал перечитывать файл перед выдачей ошибки?
действия
1. let unused = ()
2. запустисть сборку (стеком)
3. закомментировать: — let unused = ()
4. получить error (при -Werror) о неиспользованной переменной unused в строке -- let unused = () закомментированная строка в теле сообщения

Denis
31.01.2018
15:41:56
у меня вчера похожее было!
только там мне во время тайпчекинга неправильный тип в дырке выводился
когда я его поменял

Александр
31.01.2018
15:45:53
В плане type level magic нужно разделять: желание создать типобесопасный тулинг (что часто бывает полезным) и желание писать бизнес-логику в типах. Второе - от лукавого.

Alexander
31.01.2018
15:47:25
не вижу причин для справедливости того, что второе утверждение от лукавого
врочем не вижу причин для невысказанно утвержения, что писать бизнес-логику на типах надо всегда

Александр
31.01.2018
15:48:03

Google

Andrei
31.01.2018
15:48:22

Alexander
31.01.2018
15:48:55
т.е. как бы типы = инварианты проверяемые компилятором, с их помощью можно внести ограничение на значения, стейты переходы

Александр
31.01.2018
15:49:12

Alexander
31.01.2018
15:49:21
читать типы человеку знающему предметную область может быть проще
т.к. в них логики существенно меньше, и нету implementation details
так же оно всегда чекается

Александр
31.01.2018
15:50:02

Alexander
31.01.2018
15:50:07
дальше уже вопрос, а нужно ли это и что привнесение такой логики принесёт
общего ответа тут уже нету

Александр
31.01.2018
15:50:40
Просто потому что Servant - это своеобразный, но DSL, а opalyeye... НедоDSL

Denis
31.01.2018
15:51:25
с большим развесистым API в серванте можно пожалеть что ты на свет родился
удачи при мердже

Александр
31.01.2018
15:52:36
"Понятные" с точки зрения среднестатистического разработчика.

Denis
31.01.2018
15:55:27
Ну опять. Что такое “среднестатистический разработчик”? Как мне пользоваться этой метрикой?

Александр
31.01.2018
15:55:40
Заметьте, кстати, разницу. Линзы, - вот уж сложная внутри библиотека, чего только там нет. Но они отличные, их использовать легко. В этом и смысл дизайна. Дизайн компонента не должен вести к тому, чтобы его было трудно использовать.

Denis
31.01.2018
15:56:21
спорное заявление, мягко говоря

Leonid
31.01.2018
15:56:35
Средний программист, мальчик молодой.

Александр
31.01.2018
15:57:06

Leonid
31.01.2018
15:57:49
А чего сложного в type families?

Александр
31.01.2018
15:58:30