Size: a a a

2021 April 28

KV

Kirill Valyavin in Haskell
Если не получится, пишите, поможем
источник

m

monagatep in Haskell
О, тоже вариант
источник

m

monagatep in Haskell
Спасибо!
источник

JS

Jerzy Syrowiecki in Haskell
https://www.stackage.org/haddock/lts-17.10/unliftio-core-0.2.0.1/Control-Monad-IO-Unlift.html#t:MonadUnliftIO

автор из коробки даёт инстанс для ReaderT, но не для WriterT и StateT. наверно, что-то объективно мешает это сделать
источник

JS

Jerzy Syrowiecki in Haskell
MonadBaseControl устарел? в нём что-то концептуально неправильно? lifted-async всё ещё его использует
источник

m

monagatep in Haskell
Ну вот persistent уже нет
источник

JS

Jerzy Syrowiecki in Haskell
While MonadIO allows an IO action to be lifted into another monad, this class captures the opposite concept: allowing you to capture the monadic context. Note that, in order to meet the laws given below, the intuition is that a monad must have no monadic state, but may have monadic context. This essentially limits MonadUnliftIO to ReaderT and IdentityT transformers on top of IO.
источник

m

monagatep in Haskell
источник

m

monagatep in Haskell
runSqlConn :: (MonadUnliftIO m, BackendCompatible SqlBackend backend) => ReaderT backend m a -> backend -> m a
источник

m

monagatep in Haskell
Может, есть какой-то способ вытащить MonadIO или даже IO из MonadUnliftIO?

Вот в таком коде:

doPostgresPersist :: Postgres m => PSQL.SqlPersistT m a -> m a
doPostgresPersist p = do
 conn <- askConn
 logFunc <- askLoggerIO
 pconn <- liftIO $ PPG.openSimpleConn logFunc conn
 PSQL.runSqlConn p pconn
источник

m

monagatep in Haskell
Где
источник

m

monagatep in Haskell
class (MonadBaseControl IO m, MonadLoggerIO m, MonadCatch m) => Postgres m where
 askConn :: m PG.Connection
 askOpts :: m Opts
 getTxState :: m TxState
 putTxState :: TxState -> m ()
 txState :: (TxState -> (a, TxState)) -> m a
источник

JS

Jerzy Syrowiecki in Haskell
теоретически нет, это же противоположные вещи. а зачем?
источник

JS

Jerzy Syrowiecki in Haskell
и зачем вам RWST в запросах?
источник

m

monagatep in Haskell
Легаси
источник

m

monagatep in Haskell
Программист уже в другой проект ушёл
источник

m

monagatep in Haskell
Предыдущий
источник

m

monagatep in Haskell
В R подключение, в W -- логи (насколько я понял), S -- что-то ещё, пока не смотрел
источник

JS

Jerzy Syrowiecki in Haskell
внутри RWST yourBackend можно вызвать lift runSqlConn
источник

m

monagatep in Haskell
Ну мне бы на первое время какую-нить функцию escapeFromUnliftIO, чтобы тут её использовать:

```
doPostgresPersist :: Postgres m => PSQL.SqlPersistT m a -> m a
doPostgresPersist p = do
 conn <- askConn
 logFunc <- askLoggerIO
 pconn <- liftIO $ PPG.openSimpleConn logFunc conn

 escapeFromUnliftIO $       PSQL.runSqlConn p pconn
```
источник