Size: a a a

2021 April 28

m

monagatep in Haskell
> % stack --help | grep concurrent                                                                                                                                                       
>  -j,--jobs JOBS           Number of concurrent jobs to run
источник

m

monagatep in Haskell
> % stack --version                
> Version 2.5.1, Git revision d6ab861544918185236cf826cb2028abb266d6d5 x86_64 hpack-0.33.0
источник

m

monagatep in Haskell
Да, сейчас попробую...
источник

JS

Jerzy Syrowiecki in Haskell
ага, но всё равно stack jobs гранулируются на уровень выше модулей
источник

m

monagatep in Haskell
Фух, ну, с пустыми instance MonadUnliftIO (StateT m) скомпилировалось. Даже не поседел в процессе, всё сравнительно просто оказалось :)

Завтра уже с новыми силами попробую и эти пустышки реализовать.

Спасибо за подсказки!
источник

JS

Jerzy Syrowiecki in Haskell
а вот это плохо пахнет. должно было заработать без этого
источник

ЗП

Зигохистоморфный Пре... in Haskell
Если такого инстанса нет в либе, то на то есть причины наверное ибо StateT довольно популярный трансформер
источник

JS

Jerzy Syrowiecki in Haskell
не могу сказать больше без погружения в код
источник

JS

Jerzy Syrowiecki in Haskell
это скорее архитектурная задача
источник

MK

Maxim Koltsov in Haskell
Анлифтить можно только ридер
источник

MK

Maxim Koltsov in Haskell
Для остального есть монад контрол
источник

ЗП

Зигохистоморфный Пре... in Haskell
Где это описано?
источник

JS

Jerzy Syrowiecki in Haskell
там задача — скрещивать StateT и persistent-postgresql
источник

MK

Maxim Koltsov in Haskell
В доке анлифтио
источник

ЗП

Зигохистоморфный Пре... in Haskell
Не так выразился, почему только Reader?
источник

MK

Maxim Koltsov in Haskell
Потому что у него не надо запоминать и восстанавливать стейт
источник

m

monagatep in Haskell
Я не до конца понимаю суть, почему нельзя протягивать состояние.

Вот у меня такое:

type PostgresT m = ReaderT Connection (StateT TxState m) -- Убрал RWST

type TxState = HMap TxStateKeySpace

data TxStateKeySpace

data HMap keySpace where
 HMap :: Map Text (PropertyValue keySpace) -> HMap keySpace

data PropertyValue keySpace where
 PropertyValue :: (IsKeySpaceProperty keySpace name t) => Key keySpace name t -> t -> PropertyValue keySpace


Т.е. наверняка ж можно, как тут уже рекомендовали, для реализации MonadUnliftIO StateT просто через MVar перебросить?
источник

JS

Jerzy Syrowiecki in Haskell
но тогда лучше ReaderT MVar, чем StateT
источник

JS

Jerzy Syrowiecki in Haskell
но State и MVar — это существенно разные вещи. State всегда контролируется, а MVar может уплыть в другую нитку
источник

m

monagatep in Haskell
Пожалуй, хороший вариант.

Но да, надо ещё что-то с потоками придумать...
источник