Alexander
а что за строка?
Leonid 🦇
Синглетоны даже в вашем SOLID OOP антипатерн
Alexander
unsafePerformIO + NOINLINE
Alexander
hlint его подсказывает теперь?
Alexander
ага
Alexander
ну или ghc-mod, но он вряд ли
Alexander
что интересно т.к. иногда может быть наоборот inline надо
Denis
https://stackoverflow.com/questions/137975/what-is-so-bad-about-singletons
Denis
гугл еще подсказывает singletons considered stupid
Alexander
так это же линтер, когда inline надо он типа ругается что антипаттерн
Leonid 🦇
обоснуй
https://www.google.ru/search?q=singletons+considered+harmful
Alexander
просто нужно правильные синглетоны
Alexander
1 значение - 1 тип
Alexander
и все круто
Alexander
ещё и подобие DT поверх
A64m
НЕ ОЧЕНЬ
Alexander
ну типа конечно правильные вещи пишут
Alexander
но альтернативы я там не особо нашел
Denis
НЕ ОЧЕНЬ
синглтоны или кавычки в кабал файле?
A64m
синглетоны
Alexander
местные или оопшные?
A64m
и те и другие
Влод
синглтон = шарить стейт. а хаскель как-то не очень с этим
Leonid 🦇
и те и другие
а как еще делать FastString?
Alexander
ну то есть понятно, что можно взять все синглтоны, собрать вместе, завернуть в readerT и херануть в код, но фреймворк сука против
Alexander
ну вот, например, пул подключений к СУБД
Leonid 🦇
все, ВСЕ делают пул в ридере
Leonid 🦇
(MonadReader r m, HasPool r) => и -> вперда
Alexander
ну в том, что в фреймворке захардкожен тип IO (FrameworkMonad ())
Alexander
и я не могу переопределить FrameworMonad
кана
че за фреймворк такой
Leonid 🦇
lift то можно?
Alexander
happstack-lite же
Alexander
не, ну lift можно
Leonid 🦇
хапстак вообще весь на трансформерах
Leonid 🦇
там три десятка трансформеров в глубину
Alexander
вот лайтовая версия видимо нет
Alexander
надо бы апгрейдится на нормальную
Alexander
куда я там reader запихну?*
Alexander
мне же его вызвать надо из-за пределов main loop
Alexander
юя не очень хочу читать интерфейсы хапстакп
Leonid 🦇
serve config (runReaderT myApp pool)
Alexander
серьезно, заработает?Нг
Alexander
но вот как выше наверняка можно
Alexander
дока у них из говна походу
Alexander
спасибо за помощь
Leonid 🦇
ты не гони, автор голыми руками , практически один, этот хаппстак поднял
Leonid 🦇
первый фреймворк для вебчика на хаскеле
Alexander
я код и автора не отождествляю
Leonid 🦇
Джереми молодец и умничка
Alexander
если все заработает сделаю PR в доку
Leonid 🦇
я бы, правда, на твоём месте сильно в happstack не вкладывался
Alexander
чего мне с stm-conduit делать?
Alexander
там прилично поменялось то, что ожидается от кода и наверное поломаю чужой код
Leonid 🦇
Alexander
да, уже перевел
Leonid 🦇
выпускай очень мажорную версию
Alexander
отсуствие финализаторов в conduit
Leonid 🦇
саппорти предыдущую
Alexander
но я потом хочу ещё более мажорную
Leonid 🦇
делай две!
Alexander
я бы, правда, на твоём месте сильно в happstack не вкладывался
да чем там вкадываться, мне от него ничего сложнее роутинга и не надо то было
Alexander
Синглетоны даже в вашем SOLID OOP антипатерн
В SOLID Синглтонов нет. Есть в GoF. Но таки да, антипаттерн
Alexander
синглтон = шарить стейт. а хаскель как-то не очень с этим
Не обязательно. Это может быть stateless сервер
Alexander
*сервис, сорри
Alexander
мне же его вызвать надо из-за пределов main loop
Вот именно здесь нужно задуматься над тем, есть ли у вас разделение на чистую модель предметной области и на нечистый рантайм (интерфесы и имплементация). В таком дизайне вопросов про пулы не возникает, так как пул БД, всякие HTTP клиенты и все похожее - чисто рантаймные штуки и не имеют отношения к предметной области. А значит, должны уйти в имплементацию. Можно и MonadReader паттерн
Alexander
ничего не понял :(
Alexander
но и не важно
Alexander
И, повторюсь, фри монады решают эту проблему очень хорошо
Alexander
Но не обязательно только они
Leonid 🦇
Ну вот опять
Denis
я, для протокола, тоже ничего не понял
Alexander
Я серьезно, это же азы дизайна
Leonid 🦇
Это mansplaining
Leonid 🦇
и токсичные фри монады
Alexander
Я не знаю такого слова. И гуглить не буду, так как чувствую, это что-то обидное