Roman
Бля, неужто в f# 5 стейт машины для се завезут?
это ж можно будет ридер монаду без аллокаций ебошить!!11111
Roman
на самом деле мы вроде нашли хороший, годный способ композировать код без пиздеца, DI и даже фри монад
Roman
Для окончательной печати требуется проверка временем, но пока выглядит вполне годно
Roman
а как ты модули скомпозируешь, кроме как гвоздями прибьешь? Я про внедрение ИО операций так, чтобы потом можно было хотя бы для тестов подменить
Ayrat
но без шуток, на то они и модули
Анна
выглянул в окно - у нас на стадионе людей полным-полно, ходят по дорожкам, крутятся на турниках. дикие люди!
Я тоже дикий людь! Пришла в парк на подобие спортивной площадки. Там полтора дедка. Прицепили TRX на турник, разминаюсь себе. И тут всем срочно надо поттягиваться, дети в песке копаются в полутора метрах, целая блин толпа 🌚
Анна
(У нас если что ещё не запретили физкультуру)
Vasiliy
ну не знаю, в Мск народа стало значительно меньше на улице.
Roman
но без шуток, на то они и модули
ок, есть сложный воркфлоу, например: достань что-то из бд, потом логика, потом достань из эластика что-то, снова логика и потом положи в эластик. Как с помощью модулей скомпозировать эту функцию так, чтоб ее потом можно было покрыть тестами?
Vladislav
я бы с таким лидером дома сидел, не важно что запрещено а что нет
Анна
Социально-дистанцированно хотела потренить
Mikhαil
ну не знаю, в Мск народа стало значительно меньше на улице.
В мск я вообще удивлён людям если честно. Я ожидал больше похуизма гораздо
Roman
а я ебу, чо ты меня спрашиваешь. Я жсоны из кафку в кафку перекладываю...
я бы сказал, что жсоны перекладывать большого ума не надо, но ведь у вас пропалшн, эквинокс и жсон вы ркуами собираете
Roman
Неужто модули?
нет. Как тут написано, через тип AppEnv и интерфейсы: https://bartoszsypytkowski.com/dealing-with-complex-dependency-injection-in-f/amp/?__twitter_impression=true
Vladislav
@omgszer appenv это же дырка из zio
Romɑn
zanaptak/TypedCssClasses: A CSS class type provider for F# web development. Bring external stylesheet classes into your F# code as design-time discoverable compiler-verified properties. https://github.com/zanaptak/TypedCssClasses
Vladislav
или я не понимаю откуда он взял это
Vladislav
https://github.com/zanaptak/TypedCssClasses/blob/master/src/Utils.fs
Vladislav
Религия как всегда не позволяет anglesharp взять с его парсером
Vladislav
Anglesharp
Romɑn
Религия как всегда не позволяет anglesharp взять с его парсером
Василий, ты из мальчика циника сделал за год
Vladislav
Я всегда таким был
Romɑn
Anglesharp
Ну да можно было бы его взять мб.
Romɑn
Я всегда таким был
Василий лишь раскрыл твой потанцевал?
Vladislav
Просто я к тому что css это самый сложный язык что есть по семантике
Vladislav
И есть подозрение что регулярка оттуда отьебнет
Vladislav
Из провайдера
Ayrat
@omgszer appenv это же дырка из zio
Ну там написано что он сделал аналог зио
Ayrat
Кстати, я не знал что у нас так работает инфиренс let foo env = // env :> IDb and env :> ILog let user = Db.fetchUser env 123 // env :> IDb Log.debug env "User: %A" user // env :> ILog
Ayrat
Что констрейны интерфейсов композятся. Прикольно
Vladislav
У нас
Ayrat
Ну это логично раз так можно
Ну хз. Я вот думал он констрейн выведет по первому применению
Ayrat
Но вот теперь когда я это вижу, думаю что логично что он их композит. Ведь интерфейсы позволяют множественное наследование.
Ayrat
Короче, интересная фишка
Roman
и эффекты заюзали?
какие? В каком виде?
Romɑn
какие? В каком виде?
в том что в статье
Roman
Кстати, я не знал что у нас так работает инфиренс let foo env = // env :> IDb and env :> ILog let user = Db.fetchUser env 123 // env :> IDb Log.debug env "User: %A" user // env :> ILog
можно кстати композировать такие констрейнты руками, если надо, через тайп алиасы: type IOne = abstract member One: string type ITwo = abstract member Two: string type Oba<'a when 'a :> IOne and 'a: ITwo> = 'a let func (x : 'a Oba) = ...
Ayrat
Я удивлен что инфиренс на такое способен
Roman
в том что в статье
дак нет же, там эффекты в ридер монаде, а мы пошли путем AppEnv
Roman
лучше на эрланге
какие ваши аргументы?
Yaroslav
Подскажите пжст Есть ли какой то аналог раскрытия option в FSharp подобно null-conditional operator в CSharp ?
Denis
я не знаю csharp, но мб Option.defaultValue
Denis
лучше на эрланге
ну хз, мои знакомые питонисты которые пишут на эрланге (лол) говорят что пишут на эликсире а голым эрлангом добивают там где не получается и/или нужен перфоманс
Yaroslav
Я имею ввиду что то похожее на такой синтаксис в C# user?.Phone?.Company Только не с null, а с option
Yaroslav
Ну лан, щас спрошу в основном чате
Romɑn
Romɑn
https://ensime.github.io/ охлол
Shub
какие ваши аргументы?
Самобытный язык, самобытная культура.
Roman
Самобытный язык, самобытная культура.
понятней не стало есличо. Я вот действительно интересуюсь, который из них лучше выбирать и для чего
Shub
понятней не стало есличо. Я вот действительно интересуюсь, который из них лучше выбирать и для чего
erlang как язык практически не существует. изучить его как язык можно меньше, чем за неделю, особенно приходя из другого фп языка. а вот его стдлиба - это другой разговор. очень серьезную часть этой либы составляет ОТП, и ОТП - это где эликсир фейлит очень по-взрослому
Shub
основные кейсы для эликсира - это "гыыыы вебсервер делает жсон пшш-пшш", ну см. выше, где про питонистов
Shub
так что если у тебя 75% всего действа происходит в слое http, а остальные 25% - инфраструктура и девопсинг, то ни эрланг, ни эликсир тебе ничем не помогут
Shub
(но и не помешают конечно, просто в чем поинт тогда?)
Roman
а ОТП эт про что?
Roman
я че-то читал давным давно, но поверхностно довольно, так что все забыл
Shub
а ОТП эт про что?
Open Telecom Platform. грубо говоря, такой фреймворк, который покрывает около 5 основных кейсов, ну типа дизайн-паттернов что ли. только если ты им будешь следовать, то сама эта платформа даст тебе много ништяков
Shub
ну например самый банальный - gen_server. тебе нужно написать полдюжины callback-функций и из коробки ты получаешь автоматические рестарты, мониторинг за состоянием, горячий релоад кода, специальную тулзу, показывающее все дерево процессов по всему кластеру и т.п.
Shub
вот это пожалуй нетривиальное место, которое требует... хз, большого ума точно не требует, но определенного уровня доверия точно
Shub
и эликсир в этом моменте только мешает
Shub
я конечно не против, чтобы опытный инженер запилил на эликсире какую-то ноду, ну чтобы там жсон пщ-пщ-пщ, такой типа шлюз для грязных данных, но ставить эликсир в центр - хз, это как построить особняк в стиле шведский арт-нуво, но жить рядом, в колесном трейлере
Shub
Как
в смысле "как"?
Vladislav
Ну мешает
Vladislav
Откуда мне знать