Alexander
нужно, если у тебя есть другие возможности
Alexander
ладно, я в haskell лучше разбираюсь, чем в русском
Dmitry
А подскажите, есть такая же уютненький канал/конференция по Gentoo?
Alexander
https://t.me/russian_gentoo
Alexander
@dmalkr ^
Anatolii
есть по NixOS - давай лучше к нам
Alexander
https://t.me/ru_nixos
Alexander
забаньте этого спамера каналами!!1
Anatolii
точно, забылл ссылочку:)
Leonid 🦇
Haskell Windows developers, unite! I have a question for you. Does Windows Defender go nuts for you as well when you build with GHC? And if so, how do you deal with it?
https://www.reddit.com/r/haskell/comments/87eukk/haskell_windows_developers_unite_i_have_a/
Leonid 🦇
Виндоболь
Leonid 🦇
Так, рассказывайте как вы переменными среды конфигурируете свои микросервисы на хаскеле.
Leonid 🦇
какой либой?
Andrew
А чем NixOS примечательная с т.з. программиста?
Andrew
Чем она лучше arch или gentoo ?
Leonid 🦇
с т.з. программиста достаточно nix
Anatolii
Anatolii
не понял пока лучше это или хуже
Leonid 🦇
так, 12 факторов говрят энв вары тру.
Cheese
lookupEnv
Leonid 🦇
ну а валидация и вот это всё?
Denis
у нас optparse-applicative + подхачено кое-где, где оно не умеет как нам надо
Leonid 🦇
а оно умеет переменные среды разве?
Leonid 🦇
http://hackage.haskell.org/package/envy норм?
Alexander
@lonokhov:
createParser :: IO (ParserConfig)
createParser = lookupEnv и поподставлять их в default
Denis
Alexander
мечтаю взять и наконец-то зопилить расширение для optparse-applicative
Leonid 🦇
Alexander
ну почему же, в общем-то не добавляет много бойлерплейта
Alexander
но уродски, да
Alexander
с другой стороны более хорошего совмещения cli+env я не видел
Alexander
можно hflags ещё
Alexander
если любишь TH и тонны опций без деклараций явных
Leonid 🦇
А нужен ли cli?
Anatolii
мне cli удобен тем что видно что я не проставил
Anatolii
default я как-то не оч хочу
Alexander
тестить с cli удобно
Влод
Alexander
чтобы можно было указывать env "varname" и переменная искалась и в окружении
Leonid 🦇
https://github.com/pcapriotti/optparse-applicative/issues/118 типа
Влод
ого 2015
Leonid 🦇
всего 3 года назад
Влод
ну тип видимо никто ничего не сделает пока не найдётся герой
Влод
но кейз на самом деле неочевидный.
Leonid 🦇
героя мы нашли, осталось что-бы герой собрался
Alexander
@vlastachu вполне себе очевидный
Влод
я просто не ожидал бы что в зависимости от энва аргументы подбираются
тип в гите в каком то роде такое работает но там ты по сути явно видишь что это переменные
Alexander
а в парсере это сложно было
Denis
а hie кто-то пользуется?
Denis
пока похоже на еще один способ сделать емакс неотзывчивым
Alexander
брать значение из cmdline или окружения это абсолютно нормально
Alexander
можно конечно понаписать костылей в виде юнитов
Alexander
которые будут одно в другое переделывать
Denis
надо на маленьком проекте пробовать, у меня на рабочем все нафиг повисло и надо дебажить то ли сконфигурировано неправильно, то ли так оно и работает
Denis
сейчас некогда, выключил
A64m
на 5kloc как-то работает, но естественно ему столько же времени требуется сколько для того, чтоб в ghci загрузить. Но хоть не для каждого второго запроса, он собранные данные кеширует
Влод
> parseOnly (string "\\" <> ((string "\"" <> string "1") <|> string "2")) "\\21\"\\"
Right "\\"
я так понимаю моноид работает не так как я ожидал
Влод
аттопарсек
Aleksei (astynax)
как "или"
Влод
а как бы мне конкатить эти строки?
Влод
ооого
Aleksei (astynax)
fmap mconcat . sequence
кана
Или лифтом
Aleksei (astynax)
тут более двух кусков. Тут уж проще sequence
Aleksei (astynax)
Два можно было бы через (<>) <$> p1 <*> p2
Влод
чёт думал что где-нибудь найдётся
Влод
https://www.stackage.org/haddock/lts-11.2/stack-1.6.5/Data-Attoparsec-Combinators.html#v:appending
Влод
написал (<++>) = liftA2 (<>)
тк там реально нужен <|> и всё в список не затолкать
странно получается в контексте парсера как-то нет разницы <> или <|>
Aleksei (astynax)
Исторически так сложилось.
Alexander
а собирать HashMap через foldr index в стримах это нормально?
Alexander
foldr HM.insert
Alexander
или не эффективно?
A64m
fromList эффективнее, он изменяет дерево на месте
Cheese
конкатить прочитанные строки или конкатить грамматики?
string "a" *> string "b" будет матчить "ab"
Alexander
@A64m_qb0 даже с учетом того, что в первом случае массив не создастся?
A64m
Alexander
ну если я из стримовой функции верну список, который потом кину в fromList то он его не итеративно выдаст, а аллоцирует
Alexander
хм.. вопрос снят
A64m
а, нет, я не про то, конечно, что надо через список