Alexander
поэтому и дизайн этих частей логично представлять разным
Это нормальный подход. Применять то, что нужно, там, где нужно по объективным требованиям предметной области.
Alexander
хм.. ghc стал перечитывать файл перед выдачей ошибки? действия 1. let unused = () 2. запустисть сборку (стеком) 3. закомментировать: — let unused = () 4. получить error (при -Werror) о неиспользованной переменной unused в строке -- let unused = () закомментированная строка в теле сообщения
Denis
у меня вчера похожее было!
Denis
только там мне во время тайпчекинга неправильный тип в дырке выводился
Denis
когда я его поменял
Alexander
В плане type level magic нужно разделять: желание создать типобесопасный тулинг (что часто бывает полезным) и желание писать бизнес-логику в типах. Второе - от лукавого.
Alexander
не вижу причин для справедливости того, что второе утверждение от лукавого
Alexander
врочем не вижу причин для невысказанно утвержения, что писать бизнес-логику на типах надо всегда
Alexander
не вижу причин для справедливости того, что второе утверждение от лукавого
Считайте частным мнением, потому что пруфов не будет
Alexander
т.е. как бы типы = инварианты проверяемые компилятором, с их помощью можно внести ограничение на значения, стейты переходы
Alexander
“Make illegal state unrepresentable” – это бизнес-логика?
Нет, это принцип дизайна, который не имплицирует магию на типах.
Alexander
читать типы человеку знающему предметную область может быть проще
Alexander
т.к. в них логики существенно меньше, и нету implementation details
Alexander
так же оно всегда чекается
Alexander
читать типы человеку знающему предметную область может быть проще
Это очень зависит от дизайна. Читать типы servant на порядок проще, чем opaleye
Alexander
дальше уже вопрос, а нужно ли это и что привнесение такой логики принесёт
Alexander
общего ответа тут уже нету
Alexander
Просто потому что Servant - это своеобразный, но DSL, а opalyeye... НедоDSL
Denis
с большим развесистым API в серванте можно пожалеть что ты на свет родился
Denis
удачи при мердже
Alexander
с большим развесистым API в серванте можно пожалеть что ты на свет родился
Я с этим не спорю. Если бы я выбират технологию, то никакой магии на типах в продакшне у меня бы не было. Простые, кондовые, но понятные решения.
Alexander
"Понятные" с точки зрения среднестатистического разработчика.
Denis
Ну опять. Что такое “среднестатистический разработчик”? Как мне пользоваться этой метрикой?
Alexander
Заметьте, кстати, разницу. Линзы, - вот уж сложная внутри библиотека, чего только там нет. Но они отличные, их использовать легко. В этом и смысл дизайна. Дизайн компонента не должен вести к тому, чтобы его было трудно использовать.
Denis
спорное заявление, мягко говоря
Leonid 🦇
Средний программист, мальчик молодой.
Alexander
Ну опять. Что такое “среднестатистический разработчик”? Как мне пользоваться этой метрикой?
Это уже другой вопрос. Я бы скащал, что можно априори предположить, что среднестатистический хаскеллист не умеет в type families и прочие подобные штуки.
Alexander
спорное заявление, мягко говоря
Их там несколько. Какое из них?
Leonid 🦇
А чего сложного в type families?
Alexander
А чего сложного в type families?
А это третий вопрос, мало относящийся к распределению скиллов среди нашего брата.
Alexander
жалко только один опрос припинивается
Leonid 🦇
Вот АПИ норм задизайнить это да, это сложно среднему хаскелисту. Ибо нет устоявшихся практик.
Alexander
Вот АПИ норм задизайнить это да, это сложно среднему хаскелисту. Ибо нет устоявшихся практик.
Да. И нужно эти практики "устаивать". Их много уже в интернетах, только их еще не собрали в единую теорию проектирования ПО в ФП
Alexander
как их устаивать, когда про accidental complexity тут не договоритьс
Alexander
а как начнётся конкретика, там когда использовать streaming интерфейсы и какой
Alexander
тут вообще все копья переломают
Alexander
Сначала нужно, чтобы переломали. А потом найдется банда из четырех, которая все структурирует как надо.
Aliester
Четыре всадника ФПокалипсиса
Vitalii (UnknownNPC)
"Понятные" с точки зрения среднестатистического разработчика.
Напомнило статью как у команды падал прод на спэйсшип функции, а девелопер, который это писал, был в отпуске. Правда было в скале, да и переехали они потом на го, вроде. Но да, KISS желательно применять
Aliester
Монада, Стрелка, Категория и Лямбда
Aliester
какие-то всадницы конечно получаются
Alexander
хорошо не смерть чума и другие два
Aliester
Смерть, Чума, Джонс, Снойман
Alexander
: (
Alexander
Джонс и Снойман в одном ряду
Alexander
: (
Alexander
ушёл рыдать
Konstantin
кто из них хороший, плохой, злой?
Alexander
SPJ хороший
Alexander
добрый, работящий
Alexander
тут однозначно все
Konstantin
лучше армстронга?
Alexander
армстронг не пилил ghc, так что лучше
Denis
+
Alexander
но это biased
Alexander
а с паттернами есть проблема вида "*** considered harfmul"
Alexander
я бы даже сказал forall n : Pattern, n considered harmful
Alexander
а с паттернами есть проблема вида "*** considered harfmul"
А это неважно. Главное, чтобы хотя бы какой-то прдход был. А уж несогласные и про свою погоду напишут.
Alexander
*подход
Alexander
ну в блогах и т.п. и изредка в книжках и так пишут
Alexander
Сорри, экранные клавиатуры
Alexander
(о там очепятки были?)
Vitaly
А все слышали истинную историю GOTO considered harmful?
parket
Слышали, что GOTO considered harmful
parket
Но это же чушь чистой воды. :D
Alexander
А все слышали истинную историю GOTO considered harmful?
Трудно найти того, кто не слышал, но может, вы о другой
Vitaly
Ну там Дейкстра написал письмо в Communications of ACM с другим названием, куда более мягким, но Вирт, который был главредом, название поменял и сделал вот это. После этого Дейкстра страшно обиделся.
Alexander
Слышали, что GOTO considered harmful
Да, как же русский человек без оператора посыла-то будет.
parket
Заменим на jmp
Aliester
русские не скачут!
A64m
> Дийкстра > более мягким ну не знаю
Vitaly
"A Case Against the Goto Statement"
Aliester
Aliester
Вирт
Alexander
Книжек пока нету.
online книжку / сайт бы
Vitaly
> Дийкстра > более мягким ну не знаю
Вот не надо голландские буквы так просто транслитерировать!
Alexander
проще сделать чтобы устаканилось
Vitaly
У нас, кстати, некоторые преподаватели до сих пор break использовать запрещают, даже в Python