Igor
Ну лично мне то пофиг, я же на шарпе не пишу. Но во всех современных языках, уже добавили в стандартную библиотеку, вместе с комбинаторами и трансформерами аля Task->Task<Result<>> Вангую что в 9.X тоже затащит.
Ilya
Ну вот в C++ их как-то интересно хотят завести, чтобы zero-overhead и кидаться можно было value-типами. Но я пока не очень разобрался.
Ilya
Как в rust что ли?
Не знаю, как в раст.
Anatoly
https://habr.com/ru/post/468017/
Doge
https://habr.com/ru/post/468017/
О, я такое делал, но для произвольной монады, когда игрался с lightweight HKT энкодингом в шарпе
Doge
Адский хак
Vasily
https://habr.com/ru/post/468017/
Мыши плакали, кололись ...
Anonymous
https://habr.com/ru/post/468017/
Вот это да. Интересно, а можно ещё сложнее?
Anonymous
Так чтоб надо было полчаса код читать, чтобы понять что это вообще такое.
Ilya
Там дальше ещё ссылка на ридер есть.
Anonymous
Там дальше ещё ссылка на ридер есть.
Я поберегся читать дальше
Vasily
Ну вот очередной пидорас
Ilya
Я поберегся читать дальше
Так необязательно читать, можно просто вниз прокрутить)
Vasily
А потом фп маргинализируют из-за таких вот
Ilya
https://habr.com/ru/post/461371/ Personally, I think that the “Service Locator” is just as anti-pattern as the “dependency injection” itself.
Anonymous
А потом фп маргинализируют из-за таких вот
Ну едва ли у него на проде такой код. Скорее всего там везде return null без понтов.
Vasily
Даже открывать не буду
Vasily
Ну едва ли у него на проде такой код. Скорее всего там везде return null без понтов.
Ну первая статья у него про ангуляр, что симптоматично
Ilya
На проде мейби он и не предлагает использовать. А вот ридер предлагает)
Vasily
Пидор
Doge
Как из прода сделать урода.
Да я не думаю, что кто-нибудь такое всерьез на проде юзать будет. Это же хтонь лавкрафтианского уровня
Doge
Это прикольно сделать один раз, посмеяться, что и так можно, но уровень хацкерства здесь слишком велик для реального проекта.
Ilya
Тут надо Романа позвать, наверное.
Vasily
Можно и дедушку
Vasily
И Айрата
Диёр
https://habr.com/ru/post/468017/
10 строчек и целая статья, объясняющая эти 10 строчек
x
А поясните в двух словах, чем это круче selectMany и кваери синтакса?
Ilya
Тогда контекстов неявных не будет. Отвратительно.
Doge
А поясните в двух словах, чем это круче selectMany и кваери синтакса?
Это сильно более извращённое решение, такое весело придумать и заставить работать.
x
Просто мне кажется я это гдето уже видел
x
То ли у рикардо торелла толи ещё где 🤔
Андрей
иф арг равно нулл, тров аргументэксепшн
щас принято так: var guano = arg ?? throw new ArgumentNullException(nameof(arg))
Yurii
щас принято так: var guano = arg ?? throw new ArgumentNullException(nameof(arg))
ну да, видел исходный вариант и критику что есть новый синтаксис
Yurii
но конкретно тот проект давно писался, там не было еще
Диёр
Пыха кстати ругается если функция возвращает или принимает не то, что ты написал в декларации типов, в том числе на null ругается. Я аж удивлён был.
Диёр
Нет, в пыхе ты максимум что задекларировать можешь это сигнатуру и то без всяких там генериков или ещё чего-нибудь
Диёр
А в декларации класса шоб пхпшторм знал хоть какие поля у всей этой магии руками в комментах пишешь проперти и методы всякие
Aleksandr
У нас не было каррирования - мы выживали как могли
Aleksandr
Igor
https://i.gyazo.com/54d99916fd055e4781ad01e914144755.png Как же оффигено) Если так пойдет, то к 4.0 может сделают норм ML язык
Andrew
Пайтон?
Doge
Который scala 3
Doge
https://i.gyazo.com/54d99916fd055e4781ad01e914144755.png Как же оффигено) Если так пойдет, то к 4.0 может сделают норм ML язык
Ну это мелочи, самое клёвое там - это то, что Одерски придумал с type level программированием, макросами, инлайном и multistage. Вот это да, дико крутые идеи.
Igor
и что он там придумал?
Doge
и что он там придумал?
https://dotty.epfl.ch/docs/reference/metaprogramming/toc.html
Igor
Doge
> type level программированием Фу, мы тут таких не любим
Да норм же. Вон, какие няшные servant или скаловский typed-schema, tapir вышли. А без TLP такого не сделаешь.
Doge
Плюс оно кучу возможностей для оптимизации кода открывает при правильном использовании. У меня даже в расте немного его есть и оно ощутимо улучшает кодген в итоге
Igor
Ну нахрен, это не суть ФП. Дайте просто побольше иммтабельных коллекций
Doge
Ну нахрен, это не суть ФП. Дайте просто побольше иммтабельных коллекций
Ну вся ценность ФП в том, что из него вышли приличные системы типов.
Doge
А то до сих пор бы так без дженериков и сидели
Igor
Ну вся ценность ФП в том, что из него вышли приличные системы типов.
Нет, ценность ФП хорошо видна в Clojure - разделение чистого и нечистого кода. А не обмазывание все монадами и завтиапами.
Doge
А ФП без систем типов - штука медленная и относительно бесмысленная, т.к. компилятор ничего приличного из него сделать не сможет
Doge
Оно и к лучшему. Зачем мне шейплес и компиляции по 10 минут
Чтобы было быстро и проверяемо на этапе компиляции
Doge
Чтоб работал тулинг, анализ кода и т.д. и т.п.
Doge
К тому же сильно параметричный код и писать ощутимо легче, т.к. сильно меньше степеней свободы оказывается
Doge
(За счёт чего тот же хугл работает прекрасно на практике)
Igor
Чтоб работал тулинг, анализ кода и т.д. и т.п.
> тулинг > шейплей / макросы
Igor
Doge
> тулинг > шейплей / макросы
Просто не надо прям совсем типоастронавтикой заниматься, как некоторые, и оно прекрасно будет работать
Doge
Ты опять-таки берешь в пример всяких экстремалов и любителей экзотики (как чувак c Maybe async/await из недавнего) и распространяешь это предсталвение на весь подход
Doge
Хотя это вполне разумный инструмент, т.е. те же associated types в расте никого не пугают, все ими пользуются, а это по сути type families, который вполне настоящий type level programming
AlexB
Нет, ценность ФП хорошо видна в Clojure - разделение чистого и нечистого кода. А не обмазывание все монадами и завтиапами.
что такое чистый/нечистый код? 🤔 Если речь про чистые функции, то в кложуре их в явном виде нет.
Igor
что такое чистый/нечистый код? 🤔 Если речь про чистые функции, то в кложуре их в явном виде нет.
Только не надо мне заливать что mail :: IO () Чистая, потому что в хаскеле нет сайд эффектов
AlexB
Только не надо мне заливать что mail :: IO () Чистая, потому что в хаскеле нет сайд эффектов
Я не Юля, и хаскелей не знаю. А в кложуре нет никакого эксплицитного разделения на чистые/ нечистые функции. Т.е. они могут быть чистыми, но ровно в той же степени, что и в любом другом языке.
Doge
Только не надо мне заливать что mail :: IO () Чистая, потому что в хаскеле нет сайд эффектов
Но она вполне себе чистая, каким из определений ты не воспользуешься
Doge
По любому формальному определению, это чистая функция