Евгений
Расскажите для улиток чо за подкаст?
Andrei
https://devzen.ru/episode-0194/ мб
Dmitry
немного специальной олимпиады в ленту
Dmitry
https://gist.github.com/voidlizard/5d9969d98f3b60741065aa510d0b820f
Dmitry
есть такой код: 👆
Dmitry
вопросы - можно ли без фундепов?
Dmitry
т.е зависимость Param1 и Param2 от Fact1 и Fact2 вытащить в ассоциированные типы
Dmitry
но при этом не втаскивать в декларацию метода ненужные прокси.
Dmitry
так-то фундепы реально спасают
Dmitry
второй вопрос - какие проблемы могут быть с фундепами?
Dmitry
@qnikst ?
Cheese
Dmitry
@kana_sama ну вот хотелось бы понять, как. type applications засорят код в том месте, где вызываются методы тайпклассов - как-то не очень
кана
а, тут зависимость глубокая, сложно
такое не заработает, да и понятно, почему
class Foo a where
type Fact1 a
type Fact2 a
type Param1 (Fact1 a)
type Param2 (Fact2 a)
type Result a
Dmitry
неа
Dmitry
но!
кана
можно вынести наружу
Dmitry
module Main where
import Data.Fixed
class Foo fact1 fact2 (a :: * -> * -> *) where
type Param1 fact1 :: *
type Param2 fact2 :: *
type Result a :: *
someMethod :: a fact1 fact2 -> Param1 fact1 -> Param2 fact2 -> Result a
data USD = USD
data RUB = RUB
instance Foo USD RUB (,) where
type Param1 USD = Fixed E2
type Param2 RUB = Fixed E2
type Result (,) = Fixed E2
someMethod (USD,RUB) _ _ = undefined
Dmitry
вот такое работает
Dmitry
только непонятно, это лучше, чем фундепы или нет
Cheese
Cheese
поэтому я в библиотеке crdt выбрал TypeFamilies для CmRDT
Dmitry
Примеров бы
Aleksey
Есть одна программа, она скомпилирована с -prof но при запуске с +RTS -p -RTS создается пустой файл профиля. Есть идеи почему и куда копнуть?
Aleksey
Т.е. файл точно создается, после удаления вновь появляется, но пустой.
Alexander
как выключается программа?
Alexander
сама по себе или сигналом?
Alexander
Alexander
если сигналом - то шли сигюзр
Aleksey
сигналом да, sigint вроде
Aleksey
или не, по Ctrl-C
Alexander
ой блин туплю SIGINT конечно надо
Alexander
+ могут быть проблемы если форкается
Aleksey
Aleksey
на счет форков, какие именно имеются в виду? forkOS ?
Alexander
System.Process.forkProcess
Alexander
ты можешь сделать чтобы программа сама закрывалась без ^С?
Aleksey
разве что по таймауту
Aleksey
веб сервис жрет 10% проца, и я хочу определить почему.
Aleksey
собсно профиль не могу получить
Dmitry
wai течет
Dmitry
state где-то заныкался и течет
Dmitry
где-то не хвостовая рекурсия
Dmitry
вернее, не wai, а warp
Aleksey
хендлеры не запускаются, 10% он жрет в простое
Dmitry
коннекции к базе открывает?
Dmitry
держит?
Aleksey
да, и не только к ней
Dmitry
значит пул коннекций коннекции открывает/закрывает, если это пул, которым все пользуются
Dmitry
хотя all - это сноймановский тёк, да?
Dmitry
bos-вроде не тек
Dmitry
@drcha0s @s_ivanov мы же чинили такое недавно
Dmitry
по моему, это сноймановский коннекции переоткрывал по кругу
Aleksey
пул используется, но если нет запросов, то в фоне запросов не делается и соответственно коннекты открываться не должны
Yura
да
Dmitry
мы напарывались на то, что он прибивает и открывает их заново
Dmitry
сноймановский, не bos
Dmitry
так?
Yura
но он раз в секунду их опрашивает
Aleksey
Yura
да
Dmitry
да
Yura
он gc будит
Yura
сечас найду патч
Aleksey
я пробовал +RTS -I0 -RTS с ним все равно жрет, но не так сильно
Dmitry
пока посмотри, что за пул
Dmitry
сноймановский или bos
Alexander
Alexander
и resource-pool?
Alexander
он жрёт
Aleksey
пул сноймановский, resource-pool
Dmitry
а снойману сказал кто-то, btw ?
Dmitry
вы ж на цюрихаке, он поди там будет?
Yura
https://github.com/bos/pool/pull/21
Alexander
я с басом пообщаюсь
Aleksey
так, спасибо за наводку, ща проверю эту версию.
Alexander
он пытался у боса мне права выбить
Dmitry
так тут снойман же. а по ссылке bos