Vladislav
у него там были права вроде
Крылатый
Я поэтому сначала некоторые вещи на идрисе пишу, потому что там obvious proof search есть и тоталити чекер.
Крылатый
А потом уже можно на хаскель перевести.
Крылатый
так и знал, Хаскель — для скучного продакшена
Крылатый
Забавноты вам)
Vasiliy
kek в Радио-Т статья Филла. 🙈
Dmitry
Vasiliy
Ахха да и 15к строк кода легаси
Ayrat
Вот значит как. https://habr.com/ru/company/oleg-bunin/blog/472386/ Прочитайте пожалуйста. И цените что имеете.
Ayrat
@DogeShibu это мрак!
Ilya
/me прочитал первый абзац первого пункта и завернулся в уютный сишарп.
Ilya
Ой, там ещё и код есть.
Ayrat
Ой, там ещё и код есть.
Да. Причем для простых задач казалось бы, написана лютая дичь
Vladislav
@atsapura @Dolfik го в пятницу вечером посидим
Roman
погнале
Ayrat
А вы чо, все в Питере?
Roman
ну я да. За других говорить не буду!
Vasily
@DogeShibu это мрак!
Целиком не осилил
Vasily
Напоминает бессмертное "сколько нужно программистов, чтобы вкрутить лампочку"
Shub
Наброс на наброс: возможно дотнет версия была бы еще в 15 медленнее, с клейслями или без
мой человечек в противоположный угол ринга - и ставлю 3 к 1, что любой код Брагилевского будет замедлен минимум на порядок
Nikolay
За ФП позатирать
Анна
Да, можно
Я чот пропустила, когда ты в Питер перебрался 🤔
Nikolay
Погостить
Doge
может. но как правило нет
Ну Брагилевский - это как раз тот, как-то сможет так написать.
Doge
@DogeShibu это мрак!
А где там мрак? На каком-нибудь гопаке или просто Async будет точно так же
Ayrat
А где там мрак? На каком-нибудь гопаке или просто Async будет точно так же
ну нет, будет гораздо меньше кода Да, он не будет полиморфным для всех эффектов не свете, но это и не нужно
Shub
Ну Брагилевский - это как раз тот, как-то сможет так написать.
проектов много, а Брагилевский один. а людей, видевших код Брагилевского в проде и того меньше
Ayrat
Ты про первый пример?
ну про вообще. Этот код слишком слишком слишком абстрактный
Shub
А где там мрак? На каком-нибудь гопаке или просто Async будет точно так же
[S, R <: State[S], E]: MonadState[ZIO[R, E, ?], S] - ну вот например, хрестоматийный пример астронавтики. я, например, не знаю, как эти люди дышат, википедия говорит, что на тех высотах кислород только в следовых количествах
Ayrat
Да, это пиздец
Shub
Экземпляр теперь определен глобально для любой среды, которая поддерживает хотя бы State[S]. - "глокая куздра штеко будланула". синтаксически корректное предложение с нулевой семантикой
Doge
ну про вообще. Этот код слишком слишком слишком абстрактный
В первом примере, да, абстрактно. Потому что это обобщенная реализация MonadState для тех, кто не хочет трансформеров, пишется один раз и используется дальше везде. В остальных я как-то особой абстрактности относительно даже тех же async'ов не вижу.
Ayrat
Ну, на нет и суда нет :D
Doge
Ну, на нет и суда нет :D
В остальных примерах мне правда интересно, где особая абстрактность?
Doge
Но да, перевод в статье вообще атас
Doge
Я что-то не во что кроме кода не вчитывался, а текст там жуть
Igor
kek в Радио-Т статья Филла. 🙈
На каком языке Фил рефакторил свой проект? Судя по подкасту он зашквврил ф#
Vasiliy
Не, про F# там было минимально. Ведущие сказали, что ожидали сурового анализа кода, а оказалось что статья про жизнь, и про то что Филл хочет в бар сходить :D
Doge
Что здесь такого? Определяем инстанс MonadState[...] для любых типов S, R, E, где R - подтип State[S]
То, что дженерик параметров много, ну это с Де Гузом спорить надо, его идея
Ayrat
двойная вложенность параметров типов не смущает?
А что здесь такого? Ничего, обычное же дело...
Ayrat
Уже лет 5 пишу хайли конкарент код со всякими изъебами как в статье. Кстати гопак отлично решает все эти проблемы используя механизмы дотнета Но вот пришёл ДеГоуз и говорит что без стапятидесяти тайп параметров теперь нельзя описать свич от тредпула до UI
Ayrat
а в это время гопак как ни в чём не бывало свичится между своими шедулерами на лету и умеет делать всякие хитрости с UI тредом
Ayrat
да, он не ядерно полиморфный и я не могу заменить гопак на Task
Doge
двойная вложенность параметров типов не смущает?
В каком конкретно месте? R <: State[S] - это скаловский способ записи where R : State<S> MonadState[ZIO[R, E, ?], S] - это обычная запись с HKT. В котах было бы MonadState[IO, S] (но в котах и такой трюк делался бы чуть по другому)
Doge
а в это время гопак как ни в чём не бывало свичится между своими шедулерами на лету и умеет делать всякие хитрости с UI тредом
Ты можешь всегда от этих тайп параметров отказаться и писать тупо zio.Task, у которого один параметр
Ayrat
Кстати, у меня дежавю лет 5 назад все носились с паттерном РЕПОЗИТОРИЙ чтобы максимально абстрагироваться от конкретной ДБ и при случае мигрировать безболезненно
Ayrat
никому не пригодилось, я уверен
Vasiliy
До Фила не знаю, но он на F# переписал.
Doge
Кстати, у меня дежавю лет 5 назад все носились с паттерном РЕПОЗИТОРИЙ чтобы максимально абстрагироваться от конкретной ДБ и при случае мигрировать безболезненно
Ну в скале, если речь про эффекты, то оно отлично для библиотек работает. Позволяет одной библиотеке использоваться со всеми эффектами без кучи оберток и бойлерплейта
Doge
была бы нужда в этой куче разных эффектов
У них у всех разные трейдоффы относительно друг друга
Doge
И чуть разный дизайн
Ayrat
Пока что, вот так сбоку если смотреть, то польза как от разных БД. Ты выбираешь одну для конкретной задачи и её пользуешь от начала до конца проекта. Проще переписать проект, чем двигло БД на лету поменять
Ayrat
так и тут, выбираешь тул - асинки F#, гопаковские джобы, сишарпные таски, мониксовые таски, скаловские футуры, джавовские мразотные комплитаблы или зио
Ayrat
и НЕ свичишь их никогда, потому что не надо
Ayrat
заставляют эту всю копипасту типов тащить
Ayrat
Не заставляют.
Ну я тут недавно скидывал какое-то поделие на http4s на zio, там строка с типами в экран не помещалась
Ayrat
а http4s это уже прикладная либа НАД зио, которая НАД котами
Ayrat
а вся эта типо срань в клиентском коде, а не в либе
AlexB
никому не пригодилось, я уверен
Мне пригодилось. Работало с ораклом и с csv через один интерфейс репозитория.
Doge
Ну я тут недавно скидывал какое-то поделие на http4s на zio, там строка с типами в экран не помещалась
Так это из-за того стиля который автор использует, там можно было без всего этого
Doge
Ну и да, это все равно что шарповая регистрация зависимостей, там всегда так будет
Ayrat
Мне пригодилось. Работало с ораклом и с csv через один интерфейс репозитория.
это значит что ты нашёл между ораклом и csv наименьший общий интерфейс, то есть по сути отрезал от оракла 99% возможностей
Ayrat
хороший дизайн чо
Stanisλav
Doge
Ну я тут недавно скидывал какое-то поделие на http4s на zio, там строка с типами в экран не помещалась
У тебя обычно будет одно указание типа эффекта (или вообще не будет, выведется) в вызове и всё.
Doge
То что тот автор накрутил там кучу всего, это его проблема
Ayrat
У тебя обычно будет одно указание типа эффекта (или вообще не будет, выведется) в вызове и всё.
возможно. У нас тут щас 3 тела ваяют апишечку на скале под наш проект. Пока что выглядит как не очень, но они экспериментируют.