Size: a a a

2020 December 10

AV

Alexander Vershilov in Haskell
{-# NOINLINE foo #-}
foo = unsafePerformIO $ do
 lookupEnv "PROJECT_UNOPTIMIZED" >>= return . maybe (fooOptimized) (const fooUnoptimized)
источник

к

кана in Haskell
Timofey Zakrevskiy
Спека там, по слухам, ужасная
тем интереснее задача
источник

TZ

Timofey Zakrevskiy in Haskell
Maxim Koltsov
а в хаскеле есть хоть что-нибудь не 0.*, интересно?
Megaparsec?
источник

AV

Alexander Vershilov in Haskell
Alexander Vershilov
{-# NOINLINE foo #-}
foo = unsafePerformIO $ do
 lookupEnv "PROJECT_UNOPTIMIZED" >>= return . maybe (fooOptimized) (const fooUnoptimized)
(никогда так не делайте)
источник

AV

Alexander Vershilov in Haskell
Юрий Богомолов
Не просто DI, а полноценный Spring или какой-нибудь Castle Windsor с резолвом на основе текстового конфига.
Мне кажется, можно попробовать соорудить что-то на основе синглтонов, чтобы в зависимости от нужного внешнего условия резолвился тот или иной тип, для которого уже резолвился бы инстанс тайпкласса с нужным алгоритмом.
Мне скорее кажется, что реальнее частично типизированный реестр делать и через него инициализироваться
источник

к

кана in Haskell
Alexander Vershilov
{-# NOINLINE foo #-}
foo = unsafePerformIO $ do
 lookupEnv "PROJECT_UNOPTIMIZED" >>= return . maybe (fooOptimized) (const fooUnoptimized)
почему, норм
источник

AV

Alexander Vershilov in Haskell
У меня 4-5 таких штук в проекте, обычно для всяких хаков, которые иногда включать надо
источник

AV

Alexander Vershilov in Haskell
Типа, включать не совсем корректный fallback механизм на случай если внешний сервис сдох, автоматом такое не хочется делать
источник

AV

Alexander Vershilov in Haskell
Alexander Vershilov
Мне скорее кажется, что реальнее частично типизированный реестр делать и через него инициализироваться
Я об этом начал задумываться в контексте использования manager-ов в http client. минио и т.д.
источник

AV

Alexander Vershilov in Haskell
Т.е. например хочется описать несколько менеджеров с настройками стандартными своим user-agent, таймаутами. И потом цеплять в разные сервисы и тоже самое с сервисами работы файлов; в итоге вылезает куча зависимостей, которые бы не очень хотелось решать в коде
источник

ЮБ

Юрий Богомолов... in Haskell
Alexander Vershilov
Мне скорее кажется, что реальнее частично типизированный реестр делать и через него инициализироваться
С реестром можно очень много чего огрести. Я писал подобный реестр на тайпскрипте для фронтовых модулей — по сути, собирал несколько ридеров в один большой с соответствующим вайденингом типов. Еще то счастье, по правде говоря.
источник

AV

Alexander Vershilov in Haskell
Не очень понимаю зачем тут собирать много ридеров, грубо говоря это будет большой TypeRepMap
источник

AV

Alexander Vershilov in Haskell
Ну и это только на момент resolve зависит после запуска программы уже остаются только обычные структуры
источник

YS

Yan Shkurinskiy in Haskell
вопрос

собираю приложение
cabal build app
потом ставлю
cabal install app:exe:myapp --install-method=copy --installdir=/path/to/dir --overwrite-policy=always -v

ожидаю что возьмёт только что собранное, но (включил -v) смотрю по логам - пересобирает заново

почему так?
источник

MK

Maxim Koltsov in Haskell
потому что пошёл нафиг вот почему
источник

MK

Maxim Koltsov in Haskell
этож кабал
источник

YS

Yan Shkurinskiy in Haskell
это я уже понял!
источник

LO

Leonid 🦇 Onokhov in Haskell
должен перелинковать как минимум
источник

YS

Yan Shkurinskiy in Haskell
я уже смирился почти с этим
источник

LO

Leonid 🦇 Onokhov in Haskell
из-за RUNPATH
источник