Vladislav
Roman
на самом деле мы вроде нашли хороший, годный способ композировать код без пиздеца, DI и даже фри монад
Roman
Для окончательной печати требуется проверка временем, но пока выглядит вполне годно
Vasily
Vasily
Roman
а как ты модули скомпозируешь, кроме как гвоздями прибьешь? Я про внедрение ИО операций так, чтобы потом можно было хотя бы для тестов подменить
Ayrat
Ayrat
но без шуток, на то они и модули
Анна
(У нас если что ещё не запретили физкультуру)
Vasiliy
ну не знаю, в Мск народа стало значительно меньше на улице.
Roman
но без шуток, на то они и модули
ок, есть сложный воркфлоу, например: достань что-то из бд, потом логика, потом достань из эластика что-то, снова логика и потом положи в эластик.
Как с помощью модулей скомпозировать эту функцию так, чтоб ее потом можно было покрыть тестами?
Vladislav
я бы с таким лидером дома сидел, не важно что запрещено а что нет
Анна
Ayrat
Ivan
Анна
Социально-дистанцированно хотела потренить
Ayrat
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
или я не понимаю откуда он взял это
Romɑn
Vladislav
https://github.com/zanaptak/TypedCssClasses/blob/master/src/Utils.fs
Vladislav
Религия как всегда не позволяет anglesharp взять с его парсером
Romɑn
Vladislav
Anglesharp
Romɑn
Vladislav
Я всегда таким был
Romɑn
Anglesharp
Ну да можно было бы его взять мб.
Vladislav
Просто я к тому что css это самый сложный язык что есть по семантике
Vladislav
И есть подозрение что регулярка оттуда отьебнет
Vladislav
Из провайдера
Vladislav
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
Vladislav
У нас
Ayrat
Но вот теперь когда я это вижу, думаю что логично что он их композит. Ведь интерфейсы позволяют множественное наследование.
Ayrat
Короче, интересная фишка
Romɑn
Romɑn
Ayrat
Ayrat
Я удивлен что инфиренс на такое способен
Shub
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
Shub
основные кейсы для эликсира - это "гыыыы вебсервер делает жсон пшш-пшш", ну см. выше, где про питонистов
Shub
так что если у тебя 75% всего действа происходит в слое http, а остальные 25% - инфраструктура и девопсинг, то ни эрланг, ни эликсир тебе ничем не помогут
Shub
(но и не помешают конечно, просто в чем поинт тогда?)
Roman
а ОТП эт про что?
Roman
я че-то читал давным давно, но поверхностно довольно, так что все забыл
Shub
а ОТП эт про что?
Open Telecom Platform. грубо говоря, такой фреймворк, который покрывает около 5 основных кейсов, ну типа дизайн-паттернов что ли. только если ты им будешь следовать, то сама эта платформа даст тебе много ништяков
Shub
ну например самый банальный - gen_server. тебе нужно написать полдюжины callback-функций и из коробки ты получаешь автоматические рестарты, мониторинг за состоянием, горячий релоад кода, специальную тулзу, показывающее все дерево процессов по всему кластеру и т.п.
Shub
вот это пожалуй нетривиальное место, которое требует... хз, большого ума точно не требует, но определенного уровня доверия точно
Shub
и эликсир в этом моменте только мешает
Shub
я конечно не против, чтобы опытный инженер запилил на эликсире какую-то ноду, ну чтобы там жсон пщ-пщ-пщ, такой типа шлюз для грязных данных, но ставить эликсир в центр - хз, это как построить особняк в стиле шведский арт-нуво, но жить рядом, в колесном трейлере
Vladislav
Shub
Как
в смысле "как"?
Vladislav
Ну мешает
Vladislav
Откуда мне знать