-- | Provides the 'CharonT' type for running Charon.
module Charon.Runner.CharonT
  ( CharonT (MkCharonT),
    runCharonT,
    usingCharonT,
  )
where

import Charon.Prelude
import Charon.Runner.Env (Env, LogFile, handle, logLevel)
import Effects.LoggerNS (defaultLogFormatter, guardLevel)
import Effects.LoggerNS qualified as Logger

-- | `CharonT` is the main application type that runs shell commands.
type CharonT :: Type -> (Type -> Type) -> Type -> Type
newtype CharonT env m a = MkCharonT (ReaderT env m a)
  deriving
    ( (forall a b. (a -> b) -> CharonT env m a -> CharonT env m b)
-> (forall a b. a -> CharonT env m b -> CharonT env m a)
-> Functor (CharonT env m)
forall a b. a -> CharonT env m b -> CharonT env m a
forall a b. (a -> b) -> CharonT env m a -> CharonT env m b
forall env (m :: * -> *) a b.
Functor m =>
a -> CharonT env m b -> CharonT env m a
forall env (m :: * -> *) a b.
Functor m =>
(a -> b) -> CharonT env m a -> CharonT env m b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
$cfmap :: forall env (m :: * -> *) a b.
Functor m =>
(a -> b) -> CharonT env m a -> CharonT env m b
fmap :: forall a b. (a -> b) -> CharonT env m a -> CharonT env m b
$c<$ :: forall env (m :: * -> *) a b.
Functor m =>
a -> CharonT env m b -> CharonT env m a
<$ :: forall a b. a -> CharonT env m b -> CharonT env m a
Functor,
      Functor (CharonT env m)
Functor (CharonT env m) =>
(forall a. a -> CharonT env m a)
-> (forall a b.
    CharonT env m (a -> b) -> CharonT env m a -> CharonT env m b)
-> (forall a b c.
    (a -> b -> c)
    -> CharonT env m a -> CharonT env m b -> CharonT env m c)
-> (forall a b.
    CharonT env m a -> CharonT env m b -> CharonT env m b)
-> (forall a b.
    CharonT env m a -> CharonT env m b -> CharonT env m a)
-> Applicative (CharonT env m)
forall a. a -> CharonT env m a
forall a b. CharonT env m a -> CharonT env m b -> CharonT env m a
forall a b. CharonT env m a -> CharonT env m b -> CharonT env m b
forall a b.
CharonT env m (a -> b) -> CharonT env m a -> CharonT env m b
forall a b c.
(a -> b -> c)
-> CharonT env m a -> CharonT env m b -> CharonT env m c
forall env (m :: * -> *). Applicative m => Functor (CharonT env m)
forall env (m :: * -> *) a. Applicative m => a -> CharonT env m a
forall env (m :: * -> *) a b.
Applicative m =>
CharonT env m a -> CharonT env m b -> CharonT env m a
forall env (m :: * -> *) a b.
Applicative m =>
CharonT env m a -> CharonT env m b -> CharonT env m b
forall env (m :: * -> *) a b.
Applicative m =>
CharonT env m (a -> b) -> CharonT env m a -> CharonT env m b
forall env (m :: * -> *) a b c.
Applicative m =>
(a -> b -> c)
-> CharonT env m a -> CharonT env m b -> CharonT env m c
forall (f :: * -> *).
Functor f =>
(forall a. a -> f a)
-> (forall a b. f (a -> b) -> f a -> f b)
-> (forall a b c. (a -> b -> c) -> f a -> f b -> f c)
-> (forall a b. f a -> f b -> f b)
-> (forall a b. f a -> f b -> f a)
-> Applicative f
$cpure :: forall env (m :: * -> *) a. Applicative m => a -> CharonT env m a
pure :: forall a. a -> CharonT env m a
$c<*> :: forall env (m :: * -> *) a b.
Applicative m =>
CharonT env m (a -> b) -> CharonT env m a -> CharonT env m b
<*> :: forall a b.
CharonT env m (a -> b) -> CharonT env m a -> CharonT env m b
$cliftA2 :: forall env (m :: * -> *) a b c.
Applicative m =>
(a -> b -> c)
-> CharonT env m a -> CharonT env m b -> CharonT env m c
liftA2 :: forall a b c.
(a -> b -> c)
-> CharonT env m a -> CharonT env m b -> CharonT env m c
$c*> :: forall env (m :: * -> *) a b.
Applicative m =>
CharonT env m a -> CharonT env m b -> CharonT env m b
*> :: forall a b. CharonT env m a -> CharonT env m b -> CharonT env m b
$c<* :: forall env (m :: * -> *) a b.
Applicative m =>
CharonT env m a -> CharonT env m b -> CharonT env m a
<* :: forall a b. CharonT env m a -> CharonT env m b -> CharonT env m a
Applicative,
      Applicative (CharonT env m)
Applicative (CharonT env m) =>
(forall a b.
 CharonT env m a -> (a -> CharonT env m b) -> CharonT env m b)
-> (forall a b.
    CharonT env m a -> CharonT env m b -> CharonT env m b)
-> (forall a. a -> CharonT env m a)
-> Monad (CharonT env m)
forall a. a -> CharonT env m a
forall a b. CharonT env m a -> CharonT env m b -> CharonT env m b
forall a b.
CharonT env m a -> (a -> CharonT env m b) -> CharonT env m b
forall env (m :: * -> *). Monad m => Applicative (CharonT env m)
forall env (m :: * -> *) a. Monad m => a -> CharonT env m a
forall env (m :: * -> *) a b.
Monad m =>
CharonT env m a -> CharonT env m b -> CharonT env m b
forall env (m :: * -> *) a b.
Monad m =>
CharonT env m a -> (a -> CharonT env m b) -> CharonT env m b
forall (m :: * -> *).
Applicative m =>
(forall a b. m a -> (a -> m b) -> m b)
-> (forall a b. m a -> m b -> m b)
-> (forall a. a -> m a)
-> Monad m
$c>>= :: forall env (m :: * -> *) a b.
Monad m =>
CharonT env m a -> (a -> CharonT env m b) -> CharonT env m b
>>= :: forall a b.
CharonT env m a -> (a -> CharonT env m b) -> CharonT env m b
$c>> :: forall env (m :: * -> *) a b.
Monad m =>
CharonT env m a -> CharonT env m b -> CharonT env m b
>> :: forall a b. CharonT env m a -> CharonT env m b -> CharonT env m b
$creturn :: forall env (m :: * -> *) a. Monad m => a -> CharonT env m a
return :: forall a. a -> CharonT env m a
Monad,
      Monad (CharonT env m)
Monad (CharonT env m) =>
(forall a b.
 HasCallStack =>
 CharonT env m a -> (Async a -> CharonT env m b) -> CharonT env m b)
-> (forall a b.
    HasCallStack =>
    CharonT env m a -> (Async a -> CharonT env m b) -> CharonT env m b)
-> (forall a b.
    HasCallStack =>
    Int
    -> CharonT env m a
    -> (Async a -> CharonT env m b)
    -> CharonT env m b)
-> (forall a b.
    HasCallStack =>
    ((forall c. CharonT env m c -> CharonT env m c) -> CharonT env m a)
    -> (Async a -> CharonT env m b) -> CharonT env m b)
-> (forall a b.
    HasCallStack =>
    Int
    -> ((forall c. CharonT env m c -> CharonT env m c)
        -> CharonT env m a)
    -> (Async a -> CharonT env m b)
    -> CharonT env m b)
-> (forall a. HasCallStack => Async a -> CharonT env m a)
-> (forall a.
    HasCallStack =>
    Async a -> CharonT env m (Maybe (Either SomeException a)))
-> (forall a.
    HasCallStack =>
    Async a -> CharonT env m (Either SomeException a))
-> (forall a. HasCallStack => Async a -> CharonT env m ())
-> (forall a. HasCallStack => Async a -> CharonT env m ())
-> (forall e a.
    (Exception e, HasCallStack) =>
    Async a -> e -> CharonT env m ())
-> (forall a b.
    HasCallStack =>
    CharonT env m a -> CharonT env m b -> CharonT env m (Either a b))
-> (forall a b.
    HasCallStack =>
    CharonT env m a -> CharonT env m b -> CharonT env m (a, b))
-> (forall a b.
    HasCallStack =>
    CharonT env m a -> CharonT env m b -> CharonT env m ())
-> (forall a.
    HasCallStack =>
    [Async a] -> CharonT env m (Async a, a))
-> (forall a.
    HasCallStack =>
    [Async a] -> CharonT env m (Async a, Either SomeException a))
-> (forall a.
    HasCallStack =>
    [Async a] -> CharonT env m (Async a, a))
-> (forall a.
    HasCallStack =>
    [Async a] -> CharonT env m (Async a, Either SomeException a))
-> (forall a b.
    HasCallStack =>
    Async a -> Async b -> CharonT env m (Either a b))
-> (forall a b.
    HasCallStack =>
    Async a
    -> Async b
    -> CharonT
         env m (Either (Either SomeException a) (Either SomeException b)))
-> (forall a b.
    HasCallStack =>
    Async a -> Async b -> CharonT env m (Either a b))
-> (forall a b.
    HasCallStack =>
    Async a
    -> Async b
    -> CharonT
         env m (Either (Either SomeException a) (Either SomeException b)))
-> (forall a b.
    HasCallStack =>
    Async a -> Async b -> CharonT env m ())
-> (forall a b.
    HasCallStack =>
    Async a -> Async b -> CharonT env m (a, b))
-> (forall a.
    HasCallStack =>
    CharonT env m a -> CharonT env m (Async a))
-> (forall a.
    HasCallStack =>
    CharonT env m a -> CharonT env m (Async a))
-> (forall a.
    HasCallStack =>
    Int -> CharonT env m a -> CharonT env m (Async a))
-> (forall a.
    HasCallStack =>
    ((forall c. CharonT env m c -> CharonT env m c) -> CharonT env m a)
    -> CharonT env m (Async a))
-> (forall a.
    HasCallStack =>
    Int
    -> ((forall c. CharonT env m c -> CharonT env m c)
        -> CharonT env m a)
    -> CharonT env m (Async a))
-> (forall a. HasCallStack => Async a -> CharonT env m ())
-> (forall a.
    HasCallStack =>
    (SomeException -> Bool) -> Async a -> CharonT env m ())
-> (forall a b.
    HasCallStack =>
    Async a -> Async b -> CharonT env m ())
-> (forall a b.
    HasCallStack =>
    (SomeException -> Bool) -> Async a -> Async b -> CharonT env m ())
-> (forall (t :: * -> *) a b.
    (HasCallStack, Traversable t) =>
    Positive Int
    -> (a -> CharonT env m b) -> t a -> CharonT env m (t b))
-> (forall (t :: * -> *) a b.
    (HasCallStack, Traversable t) =>
    (a -> CharonT env m b) -> t a -> CharonT env m (t b))
-> (forall (f :: * -> *) a b.
    (Foldable f, HasCallStack) =>
    Positive Int -> (a -> CharonT env m b) -> f a -> CharonT env m ())
-> (forall (f :: * -> *) a b.
    (Foldable f, HasCallStack) =>
    (a -> CharonT env m b) -> f a -> CharonT env m ())
-> MonadAsync (CharonT env m)
forall a.
HasCallStack =>
Int -> CharonT env m a -> CharonT env m (Async a)
forall a.
HasCallStack =>
Int
-> ((forall c. CharonT env m c -> CharonT env m c)
    -> CharonT env m a)
-> CharonT env m (Async a)
forall a. HasCallStack => [Async a] -> CharonT env m (Async a, a)
forall a.
HasCallStack =>
[Async a] -> CharonT env m (Async a, Either SomeException a)
forall a. HasCallStack => Async a -> CharonT env m a
forall a.
HasCallStack =>
Async a -> CharonT env m (Maybe (Either SomeException a))
forall a.
HasCallStack =>
Async a -> CharonT env m (Either SomeException a)
forall a. HasCallStack => Async a -> CharonT env m ()
forall a.
HasCallStack =>
CharonT env m a -> CharonT env m (Async a)
forall a.
HasCallStack =>
(SomeException -> Bool) -> Async a -> CharonT env m ()
forall a.
HasCallStack =>
((forall c. CharonT env m c -> CharonT env m c) -> CharonT env m a)
-> CharonT env m (Async a)
forall a b.
HasCallStack =>
Int
-> CharonT env m a
-> (Async a -> CharonT env m b)
-> CharonT env m b
forall a b.
HasCallStack =>
Int
-> ((forall c. CharonT env m c -> CharonT env m c)
    -> CharonT env m a)
-> (Async a -> CharonT env m b)
-> CharonT env m b
forall a b.
HasCallStack =>
Async a -> Async b -> CharonT env m (Either a b)
forall a b.
HasCallStack =>
Async a
-> Async b
-> CharonT
     env m (Either (Either SomeException a) (Either SomeException b))
forall a b. HasCallStack => Async a -> Async b -> CharonT env m ()
forall a b.
HasCallStack =>
Async a -> Async b -> CharonT env m (a, b)
forall a b.
HasCallStack =>
CharonT env m a -> CharonT env m b -> CharonT env m (Either a b)
forall a b.
HasCallStack =>
CharonT env m a -> CharonT env m b -> CharonT env m ()
forall a b.
HasCallStack =>
CharonT env m a -> CharonT env m b -> CharonT env m (a, b)
forall a b.
HasCallStack =>
CharonT env m a -> (Async a -> CharonT env m b) -> CharonT env m b
forall a b.
HasCallStack =>
(SomeException -> Bool) -> Async a -> Async b -> CharonT env m ()
forall a b.
HasCallStack =>
((forall c. CharonT env m c -> CharonT env m c) -> CharonT env m a)
-> (Async a -> CharonT env m b) -> CharonT env m b
forall e a.
(Exception e, HasCallStack) =>
Async a -> e -> CharonT env m ()
forall env (m :: * -> *). MonadAsync m => Monad (CharonT env m)
forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
Int -> CharonT env m a -> CharonT env m (Async a)
forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
Int
-> ((forall c. CharonT env m c -> CharonT env m c)
    -> CharonT env m a)
-> CharonT env m (Async a)
forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
[Async a] -> CharonT env m (Async a, a)
forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
[Async a] -> CharonT env m (Async a, Either SomeException a)
forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
Async a -> CharonT env m a
forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
Async a -> CharonT env m (Maybe (Either SomeException a))
forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
Async a -> CharonT env m (Either SomeException a)
forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
Async a -> CharonT env m ()
forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
CharonT env m a -> CharonT env m (Async a)
forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
(SomeException -> Bool) -> Async a -> CharonT env m ()
forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
((forall c. CharonT env m c -> CharonT env m c) -> CharonT env m a)
-> CharonT env m (Async a)
forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
Int
-> CharonT env m a
-> (Async a -> CharonT env m b)
-> CharonT env m b
forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
Int
-> ((forall c. CharonT env m c -> CharonT env m c)
    -> CharonT env m a)
-> (Async a -> CharonT env m b)
-> CharonT env m b
forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
Async a -> Async b -> CharonT env m (Either a b)
forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
Async a
-> Async b
-> CharonT
     env m (Either (Either SomeException a) (Either SomeException b))
forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
Async a -> Async b -> CharonT env m ()
forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
Async a -> Async b -> CharonT env m (a, b)
forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
CharonT env m a -> CharonT env m b -> CharonT env m (Either a b)
forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
CharonT env m a -> CharonT env m b -> CharonT env m ()
forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
CharonT env m a -> CharonT env m b -> CharonT env m (a, b)
forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
CharonT env m a -> (Async a -> CharonT env m b) -> CharonT env m b
forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
(SomeException -> Bool) -> Async a -> Async b -> CharonT env m ()
forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
((forall c. CharonT env m c -> CharonT env m c) -> CharonT env m a)
-> (Async a -> CharonT env m b) -> CharonT env m b
forall env (m :: * -> *) e a.
(MonadAsync m, Exception e, HasCallStack) =>
Async a -> e -> CharonT env m ()
forall env (m :: * -> *) (f :: * -> *) a b.
(MonadAsync m, Foldable f, HasCallStack) =>
Positive Int -> (a -> CharonT env m b) -> f a -> CharonT env m ()
forall env (m :: * -> *) (f :: * -> *) a b.
(MonadAsync m, Foldable f, HasCallStack) =>
(a -> CharonT env m b) -> f a -> CharonT env m ()
forall env (m :: * -> *) (t :: * -> *) a b.
(MonadAsync m, HasCallStack, Traversable t) =>
Positive Int
-> (a -> CharonT env m b) -> t a -> CharonT env m (t b)
forall env (m :: * -> *) (t :: * -> *) a b.
(MonadAsync m, HasCallStack, Traversable t) =>
(a -> CharonT env m b) -> t a -> CharonT env m (t b)
forall (m :: * -> *).
Monad m =>
(forall a b. HasCallStack => m a -> (Async a -> m b) -> m b)
-> (forall a b. HasCallStack => m a -> (Async a -> m b) -> m b)
-> (forall a b.
    HasCallStack =>
    Int -> m a -> (Async a -> m b) -> m b)
-> (forall a b.
    HasCallStack =>
    ((forall c. m c -> m c) -> m a) -> (Async a -> m b) -> m b)
-> (forall a b.
    HasCallStack =>
    Int -> ((forall c. m c -> m c) -> m a) -> (Async a -> m b) -> m b)
-> (forall a. HasCallStack => Async a -> m a)
-> (forall a.
    HasCallStack =>
    Async a -> m (Maybe (Either SomeException a)))
-> (forall a.
    HasCallStack =>
    Async a -> m (Either SomeException a))
-> (forall a. HasCallStack => Async a -> m ())
-> (forall a. HasCallStack => Async a -> m ())
-> (forall e a.
    (Exception e, HasCallStack) =>
    Async a -> e -> m ())
-> (forall a b. HasCallStack => m a -> m b -> m (Either a b))
-> (forall a b. HasCallStack => m a -> m b -> m (a, b))
-> (forall a b. HasCallStack => m a -> m b -> m ())
-> (forall a. HasCallStack => [Async a] -> m (Async a, a))
-> (forall a.
    HasCallStack =>
    [Async a] -> m (Async a, Either SomeException a))
-> (forall a. HasCallStack => [Async a] -> m (Async a, a))
-> (forall a.
    HasCallStack =>
    [Async a] -> m (Async a, Either SomeException a))
-> (forall a b.
    HasCallStack =>
    Async a -> Async b -> m (Either a b))
-> (forall a b.
    HasCallStack =>
    Async a
    -> Async b
    -> m (Either (Either SomeException a) (Either SomeException b)))
-> (forall a b.
    HasCallStack =>
    Async a -> Async b -> m (Either a b))
-> (forall a b.
    HasCallStack =>
    Async a
    -> Async b
    -> m (Either (Either SomeException a) (Either SomeException b)))
-> (forall a b. HasCallStack => Async a -> Async b -> m ())
-> (forall a b. HasCallStack => Async a -> Async b -> m (a, b))
-> (forall a. HasCallStack => m a -> m (Async a))
-> (forall a. HasCallStack => m a -> m (Async a))
-> (forall a. HasCallStack => Int -> m a -> m (Async a))
-> (forall a.
    HasCallStack =>
    ((forall c. m c -> m c) -> m a) -> m (Async a))
-> (forall a.
    HasCallStack =>
    Int -> ((forall c. m c -> m c) -> m a) -> m (Async a))
-> (forall a. HasCallStack => Async a -> m ())
-> (forall a.
    HasCallStack =>
    (SomeException -> Bool) -> Async a -> m ())
-> (forall a b. HasCallStack => Async a -> Async b -> m ())
-> (forall a b.
    HasCallStack =>
    (SomeException -> Bool) -> Async a -> Async b -> m ())
-> (forall (t :: * -> *) a b.
    (HasCallStack, Traversable t) =>
    Positive Int -> (a -> m b) -> t a -> m (t b))
-> (forall (t :: * -> *) a b.
    (HasCallStack, Traversable t) =>
    (a -> m b) -> t a -> m (t b))
-> (forall (f :: * -> *) a b.
    (Foldable f, HasCallStack) =>
    Positive Int -> (a -> m b) -> f a -> m ())
-> (forall (f :: * -> *) a b.
    (Foldable f, HasCallStack) =>
    (a -> m b) -> f a -> m ())
-> MonadAsync m
forall (f :: * -> *) a b.
(Foldable f, HasCallStack) =>
Positive Int -> (a -> CharonT env m b) -> f a -> CharonT env m ()
forall (f :: * -> *) a b.
(Foldable f, HasCallStack) =>
(a -> CharonT env m b) -> f a -> CharonT env m ()
forall (t :: * -> *) a b.
(HasCallStack, Traversable t) =>
Positive Int
-> (a -> CharonT env m b) -> t a -> CharonT env m (t b)
forall (t :: * -> *) a b.
(HasCallStack, Traversable t) =>
(a -> CharonT env m b) -> t a -> CharonT env m (t b)
$cwithAsync :: forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
CharonT env m a -> (Async a -> CharonT env m b) -> CharonT env m b
withAsync :: forall a b.
HasCallStack =>
CharonT env m a -> (Async a -> CharonT env m b) -> CharonT env m b
$cwithAsyncBound :: forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
CharonT env m a -> (Async a -> CharonT env m b) -> CharonT env m b
withAsyncBound :: forall a b.
HasCallStack =>
CharonT env m a -> (Async a -> CharonT env m b) -> CharonT env m b
$cwithAsyncOn :: forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
Int
-> CharonT env m a
-> (Async a -> CharonT env m b)
-> CharonT env m b
withAsyncOn :: forall a b.
HasCallStack =>
Int
-> CharonT env m a
-> (Async a -> CharonT env m b)
-> CharonT env m b
$cwithAsyncWithUnmask :: forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
((forall c. CharonT env m c -> CharonT env m c) -> CharonT env m a)
-> (Async a -> CharonT env m b) -> CharonT env m b
withAsyncWithUnmask :: forall a b.
HasCallStack =>
((forall c. CharonT env m c -> CharonT env m c) -> CharonT env m a)
-> (Async a -> CharonT env m b) -> CharonT env m b
$cwithAsyncOnWithUnmask :: forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
Int
-> ((forall c. CharonT env m c -> CharonT env m c)
    -> CharonT env m a)
-> (Async a -> CharonT env m b)
-> CharonT env m b
withAsyncOnWithUnmask :: forall a b.
HasCallStack =>
Int
-> ((forall c. CharonT env m c -> CharonT env m c)
    -> CharonT env m a)
-> (Async a -> CharonT env m b)
-> CharonT env m b
$cwait :: forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
Async a -> CharonT env m a
wait :: forall a. HasCallStack => Async a -> CharonT env m a
$cpoll :: forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
Async a -> CharonT env m (Maybe (Either SomeException a))
poll :: forall a.
HasCallStack =>
Async a -> CharonT env m (Maybe (Either SomeException a))
$cwaitCatch :: forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
Async a -> CharonT env m (Either SomeException a)
waitCatch :: forall a.
HasCallStack =>
Async a -> CharonT env m (Either SomeException a)
$ccancel :: forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
Async a -> CharonT env m ()
cancel :: forall a. HasCallStack => Async a -> CharonT env m ()
$cuninterruptibleCancel :: forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
Async a -> CharonT env m ()
uninterruptibleCancel :: forall a. HasCallStack => Async a -> CharonT env m ()
$ccancelWith :: forall env (m :: * -> *) e a.
(MonadAsync m, Exception e, HasCallStack) =>
Async a -> e -> CharonT env m ()
cancelWith :: forall e a.
(Exception e, HasCallStack) =>
Async a -> e -> CharonT env m ()
$crace :: forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
CharonT env m a -> CharonT env m b -> CharonT env m (Either a b)
race :: forall a b.
HasCallStack =>
CharonT env m a -> CharonT env m b -> CharonT env m (Either a b)
$cconcurrently :: forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
CharonT env m a -> CharonT env m b -> CharonT env m (a, b)
concurrently :: forall a b.
HasCallStack =>
CharonT env m a -> CharonT env m b -> CharonT env m (a, b)
$cconcurrently_ :: forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
CharonT env m a -> CharonT env m b -> CharonT env m ()
concurrently_ :: forall a b.
HasCallStack =>
CharonT env m a -> CharonT env m b -> CharonT env m ()
$cwaitAny :: forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
[Async a] -> CharonT env m (Async a, a)
waitAny :: forall a. HasCallStack => [Async a] -> CharonT env m (Async a, a)
$cwaitAnyCatch :: forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
[Async a] -> CharonT env m (Async a, Either SomeException a)
waitAnyCatch :: forall a.
HasCallStack =>
[Async a] -> CharonT env m (Async a, Either SomeException a)
$cwaitAnyCancel :: forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
[Async a] -> CharonT env m (Async a, a)
waitAnyCancel :: forall a. HasCallStack => [Async a] -> CharonT env m (Async a, a)
$cwaitAnyCatchCancel :: forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
[Async a] -> CharonT env m (Async a, Either SomeException a)
waitAnyCatchCancel :: forall a.
HasCallStack =>
[Async a] -> CharonT env m (Async a, Either SomeException a)
$cwaitEither :: forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
Async a -> Async b -> CharonT env m (Either a b)
waitEither :: forall a b.
HasCallStack =>
Async a -> Async b -> CharonT env m (Either a b)
$cwaitEitherCatch :: forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
Async a
-> Async b
-> CharonT
     env m (Either (Either SomeException a) (Either SomeException b))
waitEitherCatch :: forall a b.
HasCallStack =>
Async a
-> Async b
-> CharonT
     env m (Either (Either SomeException a) (Either SomeException b))
$cwaitEitherCancel :: forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
Async a -> Async b -> CharonT env m (Either a b)
waitEitherCancel :: forall a b.
HasCallStack =>
Async a -> Async b -> CharonT env m (Either a b)
$cwaitEitherCatchCancel :: forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
Async a
-> Async b
-> CharonT
     env m (Either (Either SomeException a) (Either SomeException b))
waitEitherCatchCancel :: forall a b.
HasCallStack =>
Async a
-> Async b
-> CharonT
     env m (Either (Either SomeException a) (Either SomeException b))
$cwaitEither_ :: forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
Async a -> Async b -> CharonT env m ()
waitEither_ :: forall a b. HasCallStack => Async a -> Async b -> CharonT env m ()
$cwaitBoth :: forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
Async a -> Async b -> CharonT env m (a, b)
waitBoth :: forall a b.
HasCallStack =>
Async a -> Async b -> CharonT env m (a, b)
$casync :: forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
CharonT env m a -> CharonT env m (Async a)
async :: forall a.
HasCallStack =>
CharonT env m a -> CharonT env m (Async a)
$casyncBound :: forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
CharonT env m a -> CharonT env m (Async a)
asyncBound :: forall a.
HasCallStack =>
CharonT env m a -> CharonT env m (Async a)
$casyncOn :: forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
Int -> CharonT env m a -> CharonT env m (Async a)
asyncOn :: forall a.
HasCallStack =>
Int -> CharonT env m a -> CharonT env m (Async a)
$casyncWithUnmask :: forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
((forall c. CharonT env m c -> CharonT env m c) -> CharonT env m a)
-> CharonT env m (Async a)
asyncWithUnmask :: forall a.
HasCallStack =>
((forall c. CharonT env m c -> CharonT env m c) -> CharonT env m a)
-> CharonT env m (Async a)
$casyncOnWithUnmask :: forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
Int
-> ((forall c. CharonT env m c -> CharonT env m c)
    -> CharonT env m a)
-> CharonT env m (Async a)
asyncOnWithUnmask :: forall a.
HasCallStack =>
Int
-> ((forall c. CharonT env m c -> CharonT env m c)
    -> CharonT env m a)
-> CharonT env m (Async a)
$clink :: forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
Async a -> CharonT env m ()
link :: forall a. HasCallStack => Async a -> CharonT env m ()
$clinkOnly :: forall env (m :: * -> *) a.
(MonadAsync m, HasCallStack) =>
(SomeException -> Bool) -> Async a -> CharonT env m ()
linkOnly :: forall a.
HasCallStack =>
(SomeException -> Bool) -> Async a -> CharonT env m ()
$clink2 :: forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
Async a -> Async b -> CharonT env m ()
link2 :: forall a b. HasCallStack => Async a -> Async b -> CharonT env m ()
$clink2Only :: forall env (m :: * -> *) a b.
(MonadAsync m, HasCallStack) =>
(SomeException -> Bool) -> Async a -> Async b -> CharonT env m ()
link2Only :: forall a b.
HasCallStack =>
(SomeException -> Bool) -> Async a -> Async b -> CharonT env m ()
$cpooledMapConcurrentlyN :: forall env (m :: * -> *) (t :: * -> *) a b.
(MonadAsync m, HasCallStack, Traversable t) =>
Positive Int
-> (a -> CharonT env m b) -> t a -> CharonT env m (t b)
pooledMapConcurrentlyN :: forall (t :: * -> *) a b.
(HasCallStack, Traversable t) =>
Positive Int
-> (a -> CharonT env m b) -> t a -> CharonT env m (t b)
$cpooledMapConcurrently :: forall env (m :: * -> *) (t :: * -> *) a b.
(MonadAsync m, HasCallStack, Traversable t) =>
(a -> CharonT env m b) -> t a -> CharonT env m (t b)
pooledMapConcurrently :: forall (t :: * -> *) a b.
(HasCallStack, Traversable t) =>
(a -> CharonT env m b) -> t a -> CharonT env m (t b)
$cpooledMapConcurrentlyN_ :: forall env (m :: * -> *) (f :: * -> *) a b.
(MonadAsync m, Foldable f, HasCallStack) =>
Positive Int -> (a -> CharonT env m b) -> f a -> CharonT env m ()
pooledMapConcurrentlyN_ :: forall (f :: * -> *) a b.
(Foldable f, HasCallStack) =>
Positive Int -> (a -> CharonT env m b) -> f a -> CharonT env m ()
$cpooledMapConcurrently_ :: forall env (m :: * -> *) (f :: * -> *) a b.
(MonadAsync m, Foldable f, HasCallStack) =>
(a -> CharonT env m b) -> f a -> CharonT env m ()
pooledMapConcurrently_ :: forall (f :: * -> *) a b.
(Foldable f, HasCallStack) =>
(a -> CharonT env m b) -> f a -> CharonT env m ()
MonadAsync,
      MonadThrow (CharonT env m)
MonadThrow (CharonT env m) =>
(forall e a.
 (HasCallStack, Exception e) =>
 CharonT env m a -> (e -> CharonT env m a) -> CharonT env m a)
-> MonadCatch (CharonT env m)
forall e a.
(HasCallStack, Exception e) =>
CharonT env m a -> (e -> CharonT env m a) -> CharonT env m a
forall env (m :: * -> *).
MonadCatch m =>
MonadThrow (CharonT env m)
forall env (m :: * -> *) e a.
(MonadCatch m, HasCallStack, Exception e) =>
CharonT env m a -> (e -> CharonT env m a) -> CharonT env m a
forall (m :: * -> *).
MonadThrow m =>
(forall e a.
 (HasCallStack, Exception e) =>
 m a -> (e -> m a) -> m a)
-> MonadCatch m
$ccatch :: forall env (m :: * -> *) e a.
(MonadCatch m, HasCallStack, Exception e) =>
CharonT env m a -> (e -> CharonT env m a) -> CharonT env m a
catch :: forall e a.
(HasCallStack, Exception e) =>
CharonT env m a -> (e -> CharonT env m a) -> CharonT env m a
MonadCatch,
      Monad (CharonT env m)
Monad (CharonT env m) =>
(HasCallStack => OsPath -> CharonT env m ByteString)
-> MonadFileReader (CharonT env m)
HasCallStack => OsPath -> CharonT env m ByteString
forall env (m :: * -> *).
MonadFileReader m =>
Monad (CharonT env m)
forall env (m :: * -> *).
(MonadFileReader m, HasCallStack) =>
OsPath -> CharonT env m ByteString
forall (m :: * -> *).
Monad m =>
(HasCallStack => OsPath -> m ByteString) -> MonadFileReader m
$creadBinaryFile :: forall env (m :: * -> *).
(MonadFileReader m, HasCallStack) =>
OsPath -> CharonT env m ByteString
readBinaryFile :: HasCallStack => OsPath -> CharonT env m ByteString
MonadFileReader,
      Monad (CharonT env m)
Monad (CharonT env m) =>
(HasCallStack => OsPath -> ByteString -> CharonT env m ())
-> (HasCallStack => OsPath -> ByteString -> CharonT env m ())
-> MonadFileWriter (CharonT env m)
HasCallStack => OsPath -> ByteString -> CharonT env m ()
forall env (m :: * -> *).
MonadFileWriter m =>
Monad (CharonT env m)
forall env (m :: * -> *).
(MonadFileWriter m, HasCallStack) =>
OsPath -> ByteString -> CharonT env m ()
forall (m :: * -> *).
Monad m =>
(HasCallStack => OsPath -> ByteString -> m ())
-> (HasCallStack => OsPath -> ByteString -> m ())
-> MonadFileWriter m
$cwriteBinaryFile :: forall env (m :: * -> *).
(MonadFileWriter m, HasCallStack) =>
OsPath -> ByteString -> CharonT env m ()
writeBinaryFile :: HasCallStack => OsPath -> ByteString -> CharonT env m ()
$cappendBinaryFile :: forall env (m :: * -> *).
(MonadFileWriter m, HasCallStack) =>
OsPath -> ByteString -> CharonT env m ()
appendBinaryFile :: HasCallStack => OsPath -> ByteString -> CharonT env m ()
MonadFileWriter,
      Monad (CharonT env m)
Monad (CharonT env m) =>
(HasCallStack => OsPath -> IOMode -> CharonT env m Handle)
-> (forall a.
    HasCallStack =>
    OsPath -> IOMode -> (Handle -> CharonT env m a) -> CharonT env m a)
-> (HasCallStack => Handle -> CharonT env m ())
-> (HasCallStack => Handle -> CharonT env m ())
-> (HasCallStack => Handle -> Integer -> CharonT env m ())
-> (HasCallStack => Handle -> BufferMode -> CharonT env m ())
-> (HasCallStack =>
    Handle -> SeekMode -> Integer -> CharonT env m ())
-> (HasCallStack => Handle -> CharonT env m Integer)
-> (HasCallStack => Handle -> Bool -> CharonT env m ())
-> (HasCallStack => Handle -> ByteString -> CharonT env m ())
-> (HasCallStack =>
    Handle -> ByteString -> CharonT env m ByteString)
-> MonadHandleWriter (CharonT env m)
HasCallStack => Handle -> CharonT env m Integer
HasCallStack => Handle -> CharonT env m ()
HasCallStack => Handle -> Bool -> CharonT env m ()
HasCallStack => Handle -> Integer -> CharonT env m ()
HasCallStack => Handle -> ByteString -> CharonT env m ()
HasCallStack => Handle -> ByteString -> CharonT env m ByteString
HasCallStack => Handle -> SeekMode -> Integer -> CharonT env m ()
HasCallStack => Handle -> BufferMode -> CharonT env m ()
HasCallStack => OsPath -> IOMode -> CharonT env m Handle
forall a.
HasCallStack =>
OsPath -> IOMode -> (Handle -> CharonT env m a) -> CharonT env m a
forall env (m :: * -> *).
MonadHandleWriter m =>
Monad (CharonT env m)
forall env (m :: * -> *).
(MonadHandleWriter m, HasCallStack) =>
Handle -> CharonT env m Integer
forall env (m :: * -> *).
(MonadHandleWriter m, HasCallStack) =>
Handle -> CharonT env m ()
forall env (m :: * -> *).
(MonadHandleWriter m, HasCallStack) =>
Handle -> Bool -> CharonT env m ()
forall env (m :: * -> *).
(MonadHandleWriter m, HasCallStack) =>
Handle -> Integer -> CharonT env m ()
forall env (m :: * -> *).
(MonadHandleWriter m, HasCallStack) =>
Handle -> ByteString -> CharonT env m ()
forall env (m :: * -> *).
(MonadHandleWriter m, HasCallStack) =>
Handle -> ByteString -> CharonT env m ByteString
forall env (m :: * -> *).
(MonadHandleWriter m, HasCallStack) =>
Handle -> SeekMode -> Integer -> CharonT env m ()
forall env (m :: * -> *).
(MonadHandleWriter m, HasCallStack) =>
Handle -> BufferMode -> CharonT env m ()
forall env (m :: * -> *).
(MonadHandleWriter m, HasCallStack) =>
OsPath -> IOMode -> CharonT env m Handle
forall env (m :: * -> *) a.
(MonadHandleWriter m, HasCallStack) =>
OsPath -> IOMode -> (Handle -> CharonT env m a) -> CharonT env m a
forall (m :: * -> *).
Monad m =>
(HasCallStack => OsPath -> IOMode -> m Handle)
-> (forall a.
    HasCallStack =>
    OsPath -> IOMode -> (Handle -> m a) -> m a)
-> (HasCallStack => Handle -> m ())
-> (HasCallStack => Handle -> m ())
-> (HasCallStack => Handle -> Integer -> m ())
-> (HasCallStack => Handle -> BufferMode -> m ())
-> (HasCallStack => Handle -> SeekMode -> Integer -> m ())
-> (HasCallStack => Handle -> m Integer)
-> (HasCallStack => Handle -> Bool -> m ())
-> (HasCallStack => Handle -> ByteString -> m ())
-> (HasCallStack => Handle -> ByteString -> m ByteString)
-> MonadHandleWriter m
$copenBinaryFile :: forall env (m :: * -> *).
(MonadHandleWriter m, HasCallStack) =>
OsPath -> IOMode -> CharonT env m Handle
openBinaryFile :: HasCallStack => OsPath -> IOMode -> CharonT env m Handle
$cwithBinaryFile :: forall env (m :: * -> *) a.
(MonadHandleWriter m, HasCallStack) =>
OsPath -> IOMode -> (Handle -> CharonT env m a) -> CharonT env m a
withBinaryFile :: forall a.
HasCallStack =>
OsPath -> IOMode -> (Handle -> CharonT env m a) -> CharonT env m a
$chClose :: forall env (m :: * -> *).
(MonadHandleWriter m, HasCallStack) =>
Handle -> CharonT env m ()
hClose :: HasCallStack => Handle -> CharonT env m ()
$chFlush :: forall env (m :: * -> *).
(MonadHandleWriter m, HasCallStack) =>
Handle -> CharonT env m ()
hFlush :: HasCallStack => Handle -> CharonT env m ()
$chSetFileSize :: forall env (m :: * -> *).
(MonadHandleWriter m, HasCallStack) =>
Handle -> Integer -> CharonT env m ()
hSetFileSize :: HasCallStack => Handle -> Integer -> CharonT env m ()
$chSetBuffering :: forall env (m :: * -> *).
(MonadHandleWriter m, HasCallStack) =>
Handle -> BufferMode -> CharonT env m ()
hSetBuffering :: HasCallStack => Handle -> BufferMode -> CharonT env m ()
$chSeek :: forall env (m :: * -> *).
(MonadHandleWriter m, HasCallStack) =>
Handle -> SeekMode -> Integer -> CharonT env m ()
hSeek :: HasCallStack => Handle -> SeekMode -> Integer -> CharonT env m ()
$chTell :: forall env (m :: * -> *).
(MonadHandleWriter m, HasCallStack) =>
Handle -> CharonT env m Integer
hTell :: HasCallStack => Handle -> CharonT env m Integer
$chSetEcho :: forall env (m :: * -> *).
(MonadHandleWriter m, HasCallStack) =>
Handle -> Bool -> CharonT env m ()
hSetEcho :: HasCallStack => Handle -> Bool -> CharonT env m ()
$chPut :: forall env (m :: * -> *).
(MonadHandleWriter m, HasCallStack) =>
Handle -> ByteString -> CharonT env m ()
hPut :: HasCallStack => Handle -> ByteString -> CharonT env m ()
$chPutNonBlocking :: forall env (m :: * -> *).
(MonadHandleWriter m, HasCallStack) =>
Handle -> ByteString -> CharonT env m ByteString
hPutNonBlocking :: HasCallStack => Handle -> ByteString -> CharonT env m ByteString
MonadHandleWriter,
      Monad (CharonT env m)
Monad (CharonT env m) =>
(forall a. IO a -> CharonT env m a) -> MonadIO (CharonT env m)
forall a. IO a -> CharonT env m a
forall env (m :: * -> *). MonadIO m => Monad (CharonT env m)
forall env (m :: * -> *) a. MonadIO m => IO a -> CharonT env m a
forall (m :: * -> *).
Monad m =>
(forall a. IO a -> m a) -> MonadIO m
$cliftIO :: forall env (m :: * -> *) a. MonadIO m => IO a -> CharonT env m a
liftIO :: forall a. IO a -> CharonT env m a
MonadIO,
      Monad (CharonT env m)
Monad (CharonT env m) =>
(forall a. HasCallStack => a -> CharonT env m (IORef a))
-> (forall a. HasCallStack => IORef a -> CharonT env m a)
-> (forall a. HasCallStack => IORef a -> a -> CharonT env m ())
-> (forall a. HasCallStack => IORef a -> a -> CharonT env m ())
-> (forall a.
    HasCallStack =>
    IORef a -> (a -> a) -> CharonT env m ())
-> (forall a b.
    HasCallStack =>
    IORef a -> (a -> (a, b)) -> CharonT env m b)
-> MonadIORef (CharonT env m)
forall a. HasCallStack => a -> CharonT env m (IORef a)
forall a. HasCallStack => IORef a -> CharonT env m a
forall a. HasCallStack => IORef a -> a -> CharonT env m ()
forall a. HasCallStack => IORef a -> (a -> a) -> CharonT env m ()
forall a b.
HasCallStack =>
IORef a -> (a -> (a, b)) -> CharonT env m b
forall env (m :: * -> *). MonadIORef m => Monad (CharonT env m)
forall env (m :: * -> *) a.
(MonadIORef m, HasCallStack) =>
a -> CharonT env m (IORef a)
forall env (m :: * -> *) a.
(MonadIORef m, HasCallStack) =>
IORef a -> CharonT env m a
forall env (m :: * -> *) a.
(MonadIORef m, HasCallStack) =>
IORef a -> a -> CharonT env m ()
forall env (m :: * -> *) a.
(MonadIORef m, HasCallStack) =>
IORef a -> (a -> a) -> CharonT env m ()
forall env (m :: * -> *) a b.
(MonadIORef m, HasCallStack) =>
IORef a -> (a -> (a, b)) -> CharonT env m b
forall (m :: * -> *).
Monad m =>
(forall a. HasCallStack => a -> m (IORef a))
-> (forall a. HasCallStack => IORef a -> m a)
-> (forall a. HasCallStack => IORef a -> a -> m ())
-> (forall a. HasCallStack => IORef a -> a -> m ())
-> (forall a. HasCallStack => IORef a -> (a -> a) -> m ())
-> (forall a b. HasCallStack => IORef a -> (a -> (a, b)) -> m b)
-> MonadIORef m
$cnewIORef :: forall env (m :: * -> *) a.
(MonadIORef m, HasCallStack) =>
a -> CharonT env m (IORef a)
newIORef :: forall a. HasCallStack => a -> CharonT env m (IORef a)
$creadIORef :: forall env (m :: * -> *) a.
(MonadIORef m, HasCallStack) =>
IORef a -> CharonT env m a
readIORef :: forall a. HasCallStack => IORef a -> CharonT env m a
$cwriteIORef :: forall env (m :: * -> *) a.
(MonadIORef m, HasCallStack) =>
IORef a -> a -> CharonT env m ()
writeIORef :: forall a. HasCallStack => IORef a -> a -> CharonT env m ()
$catomicWriteIORef :: forall env (m :: * -> *) a.
(MonadIORef m, HasCallStack) =>
IORef a -> a -> CharonT env m ()
atomicWriteIORef :: forall a. HasCallStack => IORef a -> a -> CharonT env m ()
$cmodifyIORef' :: forall env (m :: * -> *) a.
(MonadIORef m, HasCallStack) =>
IORef a -> (a -> a) -> CharonT env m ()
modifyIORef' :: forall a. HasCallStack => IORef a -> (a -> a) -> CharonT env m ()
$catomicModifyIORef' :: forall env (m :: * -> *) a b.
(MonadIORef m, HasCallStack) =>
IORef a -> (a -> (a, b)) -> CharonT env m b
atomicModifyIORef' :: forall a b.
HasCallStack =>
IORef a -> (a -> (a, b)) -> CharonT env m b
MonadIORef,
      MonadCatch (CharonT env m)
MonadCatch (CharonT env m) =>
(forall b.
 HasCallStack =>
 ((forall a. CharonT env m a -> CharonT env m a) -> CharonT env m b)
 -> CharonT env m b)
-> (forall b.
    HasCallStack =>
    ((forall a. CharonT env m a -> CharonT env m a) -> CharonT env m b)
    -> CharonT env m b)
-> (forall a b c.
    HasCallStack =>
    CharonT env m a
    -> (a -> ExitCase b -> CharonT env m c)
    -> (a -> CharonT env m b)
    -> CharonT env m (b, c))
-> MonadMask (CharonT env m)
forall b.
HasCallStack =>
((forall a. CharonT env m a -> CharonT env m a) -> CharonT env m b)
-> CharonT env m b
forall a b c.
HasCallStack =>
CharonT env m a
-> (a -> ExitCase b -> CharonT env m c)
-> (a -> CharonT env m b)
-> CharonT env m (b, c)
forall env (m :: * -> *). MonadMask m => MonadCatch (CharonT env m)
forall env (m :: * -> *) b.
(MonadMask m, HasCallStack) =>
((forall a. CharonT env m a -> CharonT env m a) -> CharonT env m b)
-> CharonT env m b
forall env (m :: * -> *) a b c.
(MonadMask m, HasCallStack) =>
CharonT env m a
-> (a -> ExitCase b -> CharonT env m c)
-> (a -> CharonT env m b)
-> CharonT env m (b, c)
forall (m :: * -> *).
MonadCatch m =>
(forall b. HasCallStack => ((forall a. m a -> m a) -> m b) -> m b)
-> (forall b.
    HasCallStack =>
    ((forall a. m a -> m a) -> m b) -> m b)
-> (forall a b c.
    HasCallStack =>
    m a -> (a -> ExitCase b -> m c) -> (a -> m b) -> m (b, c))
-> MonadMask m
$cmask :: forall env (m :: * -> *) b.
(MonadMask m, HasCallStack) =>
((forall a. CharonT env m a -> CharonT env m a) -> CharonT env m b)
-> CharonT env m b
mask :: forall b.
HasCallStack =>
((forall a. CharonT env m a -> CharonT env m a) -> CharonT env m b)
-> CharonT env m b
$cuninterruptibleMask :: forall env (m :: * -> *) b.
(MonadMask m, HasCallStack) =>
((forall a. CharonT env m a -> CharonT env m a) -> CharonT env m b)
-> CharonT env m b
uninterruptibleMask :: forall b.
HasCallStack =>
((forall a. CharonT env m a -> CharonT env m a) -> CharonT env m b)
-> CharonT env m b
$cgeneralBracket :: forall env (m :: * -> *) a b c.
(MonadMask m, HasCallStack) =>
CharonT env m a
-> (a -> ExitCase b -> CharonT env m c)
-> (a -> CharonT env m b)
-> CharonT env m (b, c)
generalBracket :: forall a b c.
HasCallStack =>
CharonT env m a
-> (a -> ExitCase b -> CharonT env m c)
-> (a -> CharonT env m b)
-> CharonT env m (b, c)
MonadMask,
      Monad (CharonT env m)
Monad (CharonT env m) =>
(HasCallStack => OsPath -> CharonT env m [OsPath])
-> (HasCallStack => OsPath -> CharonT env m [OsPath])
-> (HasCallStack => CharonT env m OsPath)
-> (HasCallStack => CharonT env m OsPath)
-> (HasCallStack => XdgDirectory -> OsPath -> CharonT env m OsPath)
-> (HasCallStack => XdgDirectoryList -> CharonT env m [OsPath])
-> (HasCallStack => OsPath -> CharonT env m OsPath)
-> (HasCallStack => CharonT env m OsPath)
-> (HasCallStack => CharonT env m OsPath)
-> (HasCallStack => OsPath -> CharonT env m Integer)
-> (HasCallStack => OsPath -> CharonT env m OsPath)
-> (HasCallStack => OsPath -> CharonT env m OsPath)
-> (HasCallStack => OsPath -> CharonT env m OsPath)
-> (HasCallStack => OsPath -> CharonT env m Bool)
-> (HasCallStack => OsPath -> CharonT env m Bool)
-> (HasCallStack => OsPath -> CharonT env m Bool)
-> (HasCallStack => OsPath -> CharonT env m (Maybe OsPath))
-> (HasCallStack => OsPath -> CharonT env m [OsPath])
-> (HasCallStack => [OsPath] -> OsPath -> CharonT env m [OsPath])
-> (HasCallStack =>
    (OsPath -> CharonT env m Bool)
    -> [OsPath] -> OsPath -> CharonT env m (Maybe OsPath))
-> (HasCallStack =>
    (OsPath -> CharonT env m Bool)
    -> [OsPath] -> OsPath -> CharonT env m [OsPath])
-> (HasCallStack => OsPath -> CharonT env m Bool)
-> (HasCallStack => OsPath -> CharonT env m OsPath)
-> (HasCallStack => OsPath -> CharonT env m Permissions)
-> (HasCallStack => OsPath -> CharonT env m UTCTime)
-> (HasCallStack => OsPath -> CharonT env m UTCTime)
-> MonadPathReader (CharonT env m)
HasCallStack => CharonT env m OsPath
HasCallStack => [OsPath] -> OsPath -> CharonT env m [OsPath]
HasCallStack => OsPath -> CharonT env m Bool
HasCallStack => OsPath -> CharonT env m Integer
HasCallStack => OsPath -> CharonT env m [OsPath]
HasCallStack => OsPath -> CharonT env m (Maybe OsPath)
HasCallStack => OsPath -> CharonT env m UTCTime
HasCallStack => OsPath -> CharonT env m OsPath
HasCallStack => OsPath -> CharonT env m Permissions
HasCallStack => XdgDirectoryList -> CharonT env m [OsPath]
HasCallStack => XdgDirectory -> OsPath -> CharonT env m OsPath
HasCallStack =>
(OsPath -> CharonT env m Bool)
-> [OsPath] -> OsPath -> CharonT env m [OsPath]
HasCallStack =>
(OsPath -> CharonT env m Bool)
-> [OsPath] -> OsPath -> CharonT env m (Maybe OsPath)
forall env (m :: * -> *).
MonadPathReader m =>
Monad (CharonT env m)
forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
CharonT env m OsPath
forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
[OsPath] -> OsPath -> CharonT env m [OsPath]
forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
OsPath -> CharonT env m Bool
forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
OsPath -> CharonT env m Integer
forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
OsPath -> CharonT env m [OsPath]
forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
OsPath -> CharonT env m (Maybe OsPath)
forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
OsPath -> CharonT env m UTCTime
forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
OsPath -> CharonT env m OsPath
forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
OsPath -> CharonT env m Permissions
forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
XdgDirectoryList -> CharonT env m [OsPath]
forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
XdgDirectory -> OsPath -> CharonT env m OsPath
forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
(OsPath -> CharonT env m Bool)
-> [OsPath] -> OsPath -> CharonT env m [OsPath]
forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
(OsPath -> CharonT env m Bool)
-> [OsPath] -> OsPath -> CharonT env m (Maybe OsPath)
forall (m :: * -> *).
Monad m =>
(HasCallStack => OsPath -> m [OsPath])
-> (HasCallStack => OsPath -> m [OsPath])
-> (HasCallStack => m OsPath)
-> (HasCallStack => m OsPath)
-> (HasCallStack => XdgDirectory -> OsPath -> m OsPath)
-> (HasCallStack => XdgDirectoryList -> m [OsPath])
-> (HasCallStack => OsPath -> m OsPath)
-> (HasCallStack => m OsPath)
-> (HasCallStack => m OsPath)
-> (HasCallStack => OsPath -> m Integer)
-> (HasCallStack => OsPath -> m OsPath)
-> (HasCallStack => OsPath -> m OsPath)
-> (HasCallStack => OsPath -> m OsPath)
-> (HasCallStack => OsPath -> m Bool)
-> (HasCallStack => OsPath -> m Bool)
-> (HasCallStack => OsPath -> m Bool)
-> (HasCallStack => OsPath -> m (Maybe OsPath))
-> (HasCallStack => OsPath -> m [OsPath])
-> (HasCallStack => [OsPath] -> OsPath -> m [OsPath])
-> (HasCallStack =>
    (OsPath -> m Bool) -> [OsPath] -> OsPath -> m (Maybe OsPath))
-> (HasCallStack =>
    (OsPath -> m Bool) -> [OsPath] -> OsPath -> m [OsPath])
-> (HasCallStack => OsPath -> m Bool)
-> (HasCallStack => OsPath -> m OsPath)
-> (HasCallStack => OsPath -> m Permissions)
-> (HasCallStack => OsPath -> m UTCTime)
-> (HasCallStack => OsPath -> m UTCTime)
-> MonadPathReader m
$clistDirectory :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
OsPath -> CharonT env m [OsPath]
listDirectory :: HasCallStack => OsPath -> CharonT env m [OsPath]
$cgetDirectoryContents :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
OsPath -> CharonT env m [OsPath]
getDirectoryContents :: HasCallStack => OsPath -> CharonT env m [OsPath]
$cgetCurrentDirectory :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
CharonT env m OsPath
getCurrentDirectory :: HasCallStack => CharonT env m OsPath
$cgetHomeDirectory :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
CharonT env m OsPath
getHomeDirectory :: HasCallStack => CharonT env m OsPath
$cgetXdgDirectory :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
XdgDirectory -> OsPath -> CharonT env m OsPath
getXdgDirectory :: HasCallStack => XdgDirectory -> OsPath -> CharonT env m OsPath
$cgetXdgDirectoryList :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
XdgDirectoryList -> CharonT env m [OsPath]
getXdgDirectoryList :: HasCallStack => XdgDirectoryList -> CharonT env m [OsPath]
$cgetAppUserDataDirectory :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
OsPath -> CharonT env m OsPath
getAppUserDataDirectory :: HasCallStack => OsPath -> CharonT env m OsPath
$cgetUserDocumentsDirectory :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
CharonT env m OsPath
getUserDocumentsDirectory :: HasCallStack => CharonT env m OsPath
$cgetTemporaryDirectory :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
CharonT env m OsPath
getTemporaryDirectory :: HasCallStack => CharonT env m OsPath
$cgetFileSize :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
OsPath -> CharonT env m Integer
getFileSize :: HasCallStack => OsPath -> CharonT env m Integer
$ccanonicalizePath :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
OsPath -> CharonT env m OsPath
canonicalizePath :: HasCallStack => OsPath -> CharonT env m OsPath
$cmakeAbsolute :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
OsPath -> CharonT env m OsPath
makeAbsolute :: HasCallStack => OsPath -> CharonT env m OsPath
$cmakeRelativeToCurrentDirectory :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
OsPath -> CharonT env m OsPath
makeRelativeToCurrentDirectory :: HasCallStack => OsPath -> CharonT env m OsPath
$cdoesPathExist :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
OsPath -> CharonT env m Bool
doesPathExist :: HasCallStack => OsPath -> CharonT env m Bool
$cdoesFileExist :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
OsPath -> CharonT env m Bool
doesFileExist :: HasCallStack => OsPath -> CharonT env m Bool
$cdoesDirectoryExist :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
OsPath -> CharonT env m Bool
doesDirectoryExist :: HasCallStack => OsPath -> CharonT env m Bool
$cfindExecutable :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
OsPath -> CharonT env m (Maybe OsPath)
findExecutable :: HasCallStack => OsPath -> CharonT env m (Maybe OsPath)
$cfindExecutables :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
OsPath -> CharonT env m [OsPath]
findExecutables :: HasCallStack => OsPath -> CharonT env m [OsPath]
$cfindExecutablesInDirectories :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
[OsPath] -> OsPath -> CharonT env m [OsPath]
findExecutablesInDirectories :: HasCallStack => [OsPath] -> OsPath -> CharonT env m [OsPath]
$cfindFileWith :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
(OsPath -> CharonT env m Bool)
-> [OsPath] -> OsPath -> CharonT env m (Maybe OsPath)
findFileWith :: HasCallStack =>
(OsPath -> CharonT env m Bool)
-> [OsPath] -> OsPath -> CharonT env m (Maybe OsPath)
$cfindFilesWith :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
(OsPath -> CharonT env m Bool)
-> [OsPath] -> OsPath -> CharonT env m [OsPath]
findFilesWith :: HasCallStack =>
(OsPath -> CharonT env m Bool)
-> [OsPath] -> OsPath -> CharonT env m [OsPath]
$cpathIsSymbolicLink :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
OsPath -> CharonT env m Bool
pathIsSymbolicLink :: HasCallStack => OsPath -> CharonT env m Bool
$cgetSymbolicLinkTarget :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
OsPath -> CharonT env m OsPath
getSymbolicLinkTarget :: HasCallStack => OsPath -> CharonT env m OsPath
$cgetPermissions :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
OsPath -> CharonT env m Permissions
getPermissions :: HasCallStack => OsPath -> CharonT env m Permissions
$cgetAccessTime :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
OsPath -> CharonT env m UTCTime
getAccessTime :: HasCallStack => OsPath -> CharonT env m UTCTime
$cgetModificationTime :: forall env (m :: * -> *).
(MonadPathReader m, HasCallStack) =>
OsPath -> CharonT env m UTCTime
getModificationTime :: HasCallStack => OsPath -> CharonT env m UTCTime
MonadPathReader,
      Monad (CharonT env m)
Monad (CharonT env m) =>
(HasCallStack => OsPath -> CharonT env m ())
-> (HasCallStack => Bool -> OsPath -> CharonT env m ())
-> (HasCallStack => OsPath -> CharonT env m ())
-> (HasCallStack => OsPath -> CharonT env m ())
-> (HasCallStack => OsPath -> CharonT env m ())
-> (HasCallStack => OsPath -> OsPath -> CharonT env m ())
-> (HasCallStack => OsPath -> CharonT env m ())
-> (forall a.
    HasCallStack =>
    OsPath -> CharonT env m a -> CharonT env m a)
-> (HasCallStack => OsPath -> CharonT env m ())
-> (HasCallStack => OsPath -> OsPath -> CharonT env m ())
-> (HasCallStack => OsPath -> OsPath -> CharonT env m ())
-> (HasCallStack => OsPath -> OsPath -> CharonT env m ())
-> (HasCallStack => OsPath -> OsPath -> CharonT env m ())
-> (HasCallStack => OsPath -> OsPath -> CharonT env m ())
-> (HasCallStack => OsPath -> OsPath -> CharonT env m ())
-> (HasCallStack => OsPath -> CharonT env m ())
-> (HasCallStack => OsPath -> Permissions -> CharonT env m ())
-> (HasCallStack => OsPath -> OsPath -> CharonT env m ())
-> (HasCallStack => OsPath -> UTCTime -> CharonT env m ())
-> (HasCallStack => OsPath -> UTCTime -> CharonT env m ())
-> MonadPathWriter (CharonT env m)
HasCallStack => Bool -> OsPath -> CharonT env m ()
HasCallStack => OsPath -> CharonT env m ()
HasCallStack => OsPath -> UTCTime -> CharonT env m ()
HasCallStack => OsPath -> OsPath -> CharonT env m ()
HasCallStack => OsPath -> Permissions -> CharonT env m ()
forall a.
HasCallStack =>
OsPath -> CharonT env m a -> CharonT env m a
forall env (m :: * -> *).
MonadPathWriter m =>
Monad (CharonT env m)
forall env (m :: * -> *).
(MonadPathWriter m, HasCallStack) =>
Bool -> OsPath -> CharonT env m ()
forall env (m :: * -> *).
(MonadPathWriter m, HasCallStack) =>
OsPath -> CharonT env m ()
forall env (m :: * -> *).
(MonadPathWriter m, HasCallStack) =>
OsPath -> UTCTime -> CharonT env m ()
forall env (m :: * -> *).
(MonadPathWriter m, HasCallStack) =>
OsPath -> OsPath -> CharonT env m ()
forall env (m :: * -> *).
(MonadPathWriter m, HasCallStack) =>
OsPath -> Permissions -> CharonT env m ()
forall env (m :: * -> *) a.
(MonadPathWriter m, HasCallStack) =>
OsPath -> CharonT env m a -> CharonT env m a
forall (m :: * -> *).
Monad m =>
(HasCallStack => OsPath -> m ())
-> (HasCallStack => Bool -> OsPath -> m ())
-> (HasCallStack => OsPath -> m ())
-> (HasCallStack => OsPath -> m ())
-> (HasCallStack => OsPath -> m ())
-> (HasCallStack => OsPath -> OsPath -> m ())
-> (HasCallStack => OsPath -> m ())
-> (forall a. HasCallStack => OsPath -> m a -> m a)
-> (HasCallStack => OsPath -> m ())
-> (HasCallStack => OsPath -> OsPath -> m ())
-> (HasCallStack => OsPath -> OsPath -> m ())
-> (HasCallStack => OsPath -> OsPath -> m ())
-> (HasCallStack => OsPath -> OsPath -> m ())
-> (HasCallStack => OsPath -> OsPath -> m ())
-> (HasCallStack => OsPath -> OsPath -> m ())
-> (HasCallStack => OsPath -> m ())
-> (HasCallStack => OsPath -> Permissions -> m ())
-> (HasCallStack => OsPath -> OsPath -> m ())
-> (HasCallStack => OsPath -> UTCTime -> m ())
-> (HasCallStack => OsPath -> UTCTime -> m ())
-> MonadPathWriter m
$ccreateDirectory :: forall env (m :: * -> *).
(MonadPathWriter m, HasCallStack) =>
OsPath -> CharonT env m ()
createDirectory :: HasCallStack => OsPath -> CharonT env m ()
$ccreateDirectoryIfMissing :: forall env (m :: * -> *).
(MonadPathWriter m, HasCallStack) =>
Bool -> OsPath -> CharonT env m ()
createDirectoryIfMissing :: HasCallStack => Bool -> OsPath -> CharonT env m ()
$cremoveDirectory :: forall env (m :: * -> *).
(MonadPathWriter m, HasCallStack) =>
OsPath -> CharonT env m ()
removeDirectory :: HasCallStack => OsPath -> CharonT env m ()
$cremoveDirectoryRecursive :: forall env (m :: * -> *).
(MonadPathWriter m, HasCallStack) =>
OsPath -> CharonT env m ()
removeDirectoryRecursive :: HasCallStack => OsPath -> CharonT env m ()
$cremovePathForcibly :: forall env (m :: * -> *).
(MonadPathWriter m, HasCallStack) =>
OsPath -> CharonT env m ()
removePathForcibly :: HasCallStack => OsPath -> CharonT env m ()
$crenameDirectory :: forall env (m :: * -> *).
(MonadPathWriter m, HasCallStack) =>
OsPath -> OsPath -> CharonT env m ()
renameDirectory :: HasCallStack => OsPath -> OsPath -> CharonT env m ()
$csetCurrentDirectory :: forall env (m :: * -> *).
(MonadPathWriter m, HasCallStack) =>
OsPath -> CharonT env m ()
setCurrentDirectory :: HasCallStack => OsPath -> CharonT env m ()
$cwithCurrentDirectory :: forall env (m :: * -> *) a.
(MonadPathWriter m, HasCallStack) =>
OsPath -> CharonT env m a -> CharonT env m a
withCurrentDirectory :: forall a.
HasCallStack =>
OsPath -> CharonT env m a -> CharonT env m a
$cremoveFile :: forall env (m :: * -> *).
(MonadPathWriter m, HasCallStack) =>
OsPath -> CharonT env m ()
removeFile :: HasCallStack => OsPath -> CharonT env m ()
$crenameFile :: forall env (m :: * -> *).
(MonadPathWriter m, HasCallStack) =>
OsPath -> OsPath -> CharonT env m ()
renameFile :: HasCallStack => OsPath -> OsPath -> CharonT env m ()
$crenamePath :: forall env (m :: * -> *).
(MonadPathWriter m, HasCallStack) =>
OsPath -> OsPath -> CharonT env m ()
renamePath :: HasCallStack => OsPath -> OsPath -> CharonT env m ()
$ccopyFile :: forall env (m :: * -> *).
(MonadPathWriter m, HasCallStack) =>
OsPath -> OsPath -> CharonT env m ()
copyFile :: HasCallStack => OsPath -> OsPath -> CharonT env m ()
$ccopyFileWithMetadata :: forall env (m :: * -> *).
(MonadPathWriter m, HasCallStack) =>
OsPath -> OsPath -> CharonT env m ()
copyFileWithMetadata :: HasCallStack => OsPath -> OsPath -> CharonT env m ()
$ccreateFileLink :: forall env (m :: * -> *).
(MonadPathWriter m, HasCallStack) =>
OsPath -> OsPath -> CharonT env m ()
createFileLink :: HasCallStack => OsPath -> OsPath -> CharonT env m ()
$ccreateDirectoryLink :: forall env (m :: * -> *).
(MonadPathWriter m, HasCallStack) =>
OsPath -> OsPath -> CharonT env m ()
createDirectoryLink :: HasCallStack => OsPath -> OsPath -> CharonT env m ()
$cremoveDirectoryLink :: forall env (m :: * -> *).
(MonadPathWriter m, HasCallStack) =>
OsPath -> CharonT env m ()
removeDirectoryLink :: HasCallStack => OsPath -> CharonT env m ()
$csetPermissions :: forall env (m :: * -> *).
(MonadPathWriter m, HasCallStack) =>
OsPath -> Permissions -> CharonT env m ()
setPermissions :: HasCallStack => OsPath -> Permissions -> CharonT env m ()
$ccopyPermissions :: forall env (m :: * -> *).
(MonadPathWriter m, HasCallStack) =>
OsPath -> OsPath -> CharonT env m ()
copyPermissions :: HasCallStack => OsPath -> OsPath -> CharonT env m ()
$csetAccessTime :: forall env (m :: * -> *).
(MonadPathWriter m, HasCallStack) =>
OsPath -> UTCTime -> CharonT env m ()
setAccessTime :: HasCallStack => OsPath -> UTCTime -> CharonT env m ()
$csetModificationTime :: forall env (m :: * -> *).
(MonadPathWriter m, HasCallStack) =>
OsPath -> UTCTime -> CharonT env m ()
setModificationTime :: HasCallStack => OsPath -> UTCTime -> CharonT env m ()
MonadPathWriter,
      Monad (CharonT env m)
Monad (CharonT env m) =>
(HasCallStack => FilePath -> FileMode -> CharonT env m ())
-> (HasCallStack => Fd -> FileMode -> CharonT env m ())
-> (HasCallStack => FileMode -> CharonT env m FileMode)
-> (HasCallStack =>
    FilePath -> Bool -> Bool -> Bool -> CharonT env m Bool)
-> (HasCallStack => FilePath -> CharonT env m Bool)
-> (HasCallStack => FilePath -> CharonT env m FileStatus)
-> (HasCallStack => Fd -> CharonT env m FileStatus)
-> (HasCallStack => FilePath -> CharonT env m FileStatus)
-> (HasCallStack => FilePath -> FileMode -> CharonT env m ())
-> (HasCallStack =>
    FilePath -> FileMode -> DeviceID -> CharonT env m ())
-> (HasCallStack => FilePath -> FilePath -> CharonT env m ())
-> (HasCallStack => FilePath -> CharonT env m ())
-> (HasCallStack => FilePath -> FilePath -> CharonT env m ())
-> (HasCallStack => FilePath -> CharonT env m FilePath)
-> (HasCallStack => FilePath -> FilePath -> CharonT env m ())
-> (HasCallStack =>
    FilePath -> UserID -> GroupID -> CharonT env m ())
-> (HasCallStack => Fd -> UserID -> GroupID -> CharonT env m ())
-> (HasCallStack =>
    FilePath -> UserID -> GroupID -> CharonT env m ())
-> (HasCallStack =>
    FilePath -> EpochTime -> EpochTime -> CharonT env m ())
-> (HasCallStack => FilePath -> CharonT env m ())
-> (HasCallStack => FilePath -> FileOffset -> CharonT env m ())
-> (HasCallStack => Fd -> FileOffset -> CharonT env m ())
-> (HasCallStack => FilePath -> PathVar -> CharonT env m Limit)
-> (HasCallStack => Fd -> PathVar -> CharonT env m Limit)
-> MonadPosixCompat (CharonT env m)
HasCallStack => FilePath -> CharonT env m Bool
HasCallStack => FilePath -> CharonT env m FilePath
HasCallStack => FilePath -> CharonT env m ()
HasCallStack => FilePath -> CharonT env m FileStatus
HasCallStack =>
FilePath -> Bool -> Bool -> Bool -> CharonT env m Bool
HasCallStack => FilePath -> FilePath -> CharonT env m ()
HasCallStack =>
FilePath -> EpochTime -> EpochTime -> CharonT env m ()
HasCallStack => FilePath -> UserID -> GroupID -> CharonT env m ()
HasCallStack => FilePath -> FileOffset -> CharonT env m ()
HasCallStack => FilePath -> FileMode -> CharonT env m ()
HasCallStack =>
FilePath -> FileMode -> DeviceID -> CharonT env m ()
HasCallStack => FilePath -> PathVar -> CharonT env m Limit
HasCallStack => Fd -> CharonT env m FileStatus
HasCallStack => Fd -> UserID -> GroupID -> CharonT env m ()
HasCallStack => Fd -> FileOffset -> CharonT env m ()
HasCallStack => Fd -> FileMode -> CharonT env m ()
HasCallStack => Fd -> PathVar -> CharonT env m Limit
HasCallStack => FileMode -> CharonT env m FileMode
forall env (m :: * -> *).
MonadPosixCompat m =>
Monad (CharonT env m)
forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> CharonT env m Bool
forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> CharonT env m FilePath
forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> CharonT env m ()
forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> CharonT env m FileStatus
forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> Bool -> Bool -> Bool -> CharonT env m Bool
forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> FilePath -> CharonT env m ()
forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> EpochTime -> EpochTime -> CharonT env m ()
forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> UserID -> GroupID -> CharonT env m ()
forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> FileOffset -> CharonT env m ()
forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> FileMode -> CharonT env m ()
forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> FileMode -> DeviceID -> CharonT env m ()
forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> PathVar -> CharonT env m Limit
forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
Fd -> CharonT env m FileStatus
forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
Fd -> UserID -> GroupID -> CharonT env m ()
forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
Fd -> FileOffset -> CharonT env m ()
forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
Fd -> FileMode -> CharonT env m ()
forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
Fd -> PathVar -> CharonT env m Limit
forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FileMode -> CharonT env m FileMode
forall (m :: * -> *).
Monad m =>
(HasCallStack => FilePath -> FileMode -> m ())
-> (HasCallStack => Fd -> FileMode -> m ())
-> (HasCallStack => FileMode -> m FileMode)
-> (HasCallStack => FilePath -> Bool -> Bool -> Bool -> m Bool)
-> (HasCallStack => FilePath -> m Bool)
-> (HasCallStack => FilePath -> m FileStatus)
-> (HasCallStack => Fd -> m FileStatus)
-> (HasCallStack => FilePath -> m FileStatus)
-> (HasCallStack => FilePath -> FileMode -> m ())
-> (HasCallStack => FilePath -> FileMode -> DeviceID -> m ())
-> (HasCallStack => FilePath -> FilePath -> m ())
-> (HasCallStack => FilePath -> m ())
-> (HasCallStack => FilePath -> FilePath -> m ())
-> (HasCallStack => FilePath -> m FilePath)
-> (HasCallStack => FilePath -> FilePath -> m ())
-> (HasCallStack => FilePath -> UserID -> GroupID -> m ())
-> (HasCallStack => Fd -> UserID -> GroupID -> m ())
-> (HasCallStack => FilePath -> UserID -> GroupID -> m ())
-> (HasCallStack => FilePath -> EpochTime -> EpochTime -> m ())
-> (HasCallStack => FilePath -> m ())
-> (HasCallStack => FilePath -> FileOffset -> m ())
-> (HasCallStack => Fd -> FileOffset -> m ())
-> (HasCallStack => FilePath -> PathVar -> m Limit)
-> (HasCallStack => Fd -> PathVar -> m Limit)
-> MonadPosixCompat m
$csetFileMode :: forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> FileMode -> CharonT env m ()
setFileMode :: HasCallStack => FilePath -> FileMode -> CharonT env m ()
$csetFdMode :: forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
Fd -> FileMode -> CharonT env m ()
setFdMode :: HasCallStack => Fd -> FileMode -> CharonT env m ()
$csetFileCreationMask :: forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FileMode -> CharonT env m FileMode
setFileCreationMask :: HasCallStack => FileMode -> CharonT env m FileMode
$cfileAccess :: forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> Bool -> Bool -> Bool -> CharonT env m Bool
fileAccess :: HasCallStack =>
FilePath -> Bool -> Bool -> Bool -> CharonT env m Bool
$cfileExist :: forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> CharonT env m Bool
fileExist :: HasCallStack => FilePath -> CharonT env m Bool
$cgetFileStatus :: forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> CharonT env m FileStatus
getFileStatus :: HasCallStack => FilePath -> CharonT env m FileStatus
$cgetFdStatus :: forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
Fd -> CharonT env m FileStatus
getFdStatus :: HasCallStack => Fd -> CharonT env m FileStatus
$cgetSymbolicLinkStatus :: forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> CharonT env m FileStatus
getSymbolicLinkStatus :: HasCallStack => FilePath -> CharonT env m FileStatus
$ccreateNamedPipe :: forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> FileMode -> CharonT env m ()
createNamedPipe :: HasCallStack => FilePath -> FileMode -> CharonT env m ()
$ccreateDevice :: forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> FileMode -> DeviceID -> CharonT env m ()
createDevice :: HasCallStack =>
FilePath -> FileMode -> DeviceID -> CharonT env m ()
$ccreateLink :: forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> FilePath -> CharonT env m ()
createLink :: HasCallStack => FilePath -> FilePath -> CharonT env m ()
$cremoveLink :: forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> CharonT env m ()
removeLink :: HasCallStack => FilePath -> CharonT env m ()
$ccreateSymbolicLink :: forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> FilePath -> CharonT env m ()
createSymbolicLink :: HasCallStack => FilePath -> FilePath -> CharonT env m ()
$creadSymbolicLink :: forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> CharonT env m FilePath
readSymbolicLink :: HasCallStack => FilePath -> CharonT env m FilePath
$crename :: forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> FilePath -> CharonT env m ()
rename :: HasCallStack => FilePath -> FilePath -> CharonT env m ()
$csetOwnerAndGroup :: forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> UserID -> GroupID -> CharonT env m ()
setOwnerAndGroup :: HasCallStack => FilePath -> UserID -> GroupID -> CharonT env m ()
$csetFdOwnerAndGroup :: forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
Fd -> UserID -> GroupID -> CharonT env m ()
setFdOwnerAndGroup :: HasCallStack => Fd -> UserID -> GroupID -> CharonT env m ()
$csetSymbolicLinkOwnerAndGroup :: forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> UserID -> GroupID -> CharonT env m ()
setSymbolicLinkOwnerAndGroup :: HasCallStack => FilePath -> UserID -> GroupID -> CharonT env m ()
$csetFileTimes :: forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> EpochTime -> EpochTime -> CharonT env m ()
setFileTimes :: HasCallStack =>
FilePath -> EpochTime -> EpochTime -> CharonT env m ()
$ctouchFile :: forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> CharonT env m ()
touchFile :: HasCallStack => FilePath -> CharonT env m ()
$csetFileSize :: forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> FileOffset -> CharonT env m ()
setFileSize :: HasCallStack => FilePath -> FileOffset -> CharonT env m ()
$csetFdSize :: forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
Fd -> FileOffset -> CharonT env m ()
setFdSize :: HasCallStack => Fd -> FileOffset -> CharonT env m ()
$cgetPathVar :: forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
FilePath -> PathVar -> CharonT env m Limit
getPathVar :: HasCallStack => FilePath -> PathVar -> CharonT env m Limit
$cgetFdPathVar :: forall env (m :: * -> *).
(MonadPosixCompat m, HasCallStack) =>
Fd -> PathVar -> CharonT env m Limit
getFdPathVar :: HasCallStack => Fd -> PathVar -> CharonT env m Limit
MonadPosixCompat,
      MonadReader env,
      Monad (CharonT env m)
Monad (CharonT env m) =>
(HasCallStack => FilePath -> CharonT env m ())
-> (HasCallStack => FilePath -> CharonT env m ())
-> (HasCallStack => ByteString -> CharonT env m ())
-> (HasCallStack => CharonT env m Char)
-> (HasCallStack => CharonT env m FilePath)
-> (HasCallStack => CharonT env m FilePath)
-> (HasCallStack => CharonT env m (Window Natural))
-> (HasCallStack => CharonT env m Bool)
-> MonadTerminal (CharonT env m)
HasCallStack => CharonT env m Bool
HasCallStack => CharonT env m Char
HasCallStack => CharonT env m FilePath
HasCallStack => CharonT env m (Window Natural)
HasCallStack => FilePath -> CharonT env m ()
HasCallStack => ByteString -> CharonT env m ()
forall env (m :: * -> *). MonadTerminal m => Monad (CharonT env m)
forall env (m :: * -> *).
(MonadTerminal m, HasCallStack) =>
CharonT env m Bool
forall env (m :: * -> *).
(MonadTerminal m, HasCallStack) =>
CharonT env m Char
forall env (m :: * -> *).
(MonadTerminal m, HasCallStack) =>
CharonT env m FilePath
forall env (m :: * -> *).
(MonadTerminal m, HasCallStack) =>
CharonT env m (Window Natural)
forall env (m :: * -> *).
(MonadTerminal m, HasCallStack) =>
FilePath -> CharonT env m ()
forall env (m :: * -> *).
(MonadTerminal m, HasCallStack) =>
ByteString -> CharonT env m ()
forall (m :: * -> *).
Monad m =>
(HasCallStack => FilePath -> m ())
-> (HasCallStack => FilePath -> m ())
-> (HasCallStack => ByteString -> m ())
-> (HasCallStack => m Char)
-> (HasCallStack => m FilePath)
-> (HasCallStack => m FilePath)
-> (HasCallStack => m (Window Natural))
-> (HasCallStack => m Bool)
-> MonadTerminal m
$cputStr :: forall env (m :: * -> *).
(MonadTerminal m, HasCallStack) =>
FilePath -> CharonT env m ()
putStr :: HasCallStack => FilePath -> CharonT env m ()
$cputStrLn :: forall env (m :: * -> *).
(MonadTerminal m, HasCallStack) =>
FilePath -> CharonT env m ()
putStrLn :: HasCallStack => FilePath -> CharonT env m ()
$cputBinary :: forall env (m :: * -> *).
(MonadTerminal m, HasCallStack) =>
ByteString -> CharonT env m ()
putBinary :: HasCallStack => ByteString -> CharonT env m ()
$cgetChar :: forall env (m :: * -> *).
(MonadTerminal m, HasCallStack) =>
CharonT env m Char
getChar :: HasCallStack => CharonT env m Char
$cgetLine :: forall env (m :: * -> *).
(MonadTerminal m, HasCallStack) =>
CharonT env m FilePath
getLine :: HasCallStack => CharonT env m FilePath
$cgetContents' :: forall env (m :: * -> *).
(MonadTerminal m, HasCallStack) =>
CharonT env m FilePath
getContents' :: HasCallStack => CharonT env m FilePath
$cgetTerminalSize :: forall env (m :: * -> *).
(MonadTerminal m, HasCallStack) =>
CharonT env m (Window Natural)
getTerminalSize :: HasCallStack => CharonT env m (Window Natural)
$csupportsPretty :: forall env (m :: * -> *).
(MonadTerminal m, HasCallStack) =>
CharonT env m Bool
supportsPretty :: HasCallStack => CharonT env m Bool
MonadTerminal,
      Monad (CharonT env m)
Monad (CharonT env m) =>
(forall e a. (HasCallStack, Exception e) => e -> CharonT env m a)
-> MonadThrow (CharonT env m)
forall e a. (HasCallStack, Exception e) => e -> CharonT env m a
forall env (m :: * -> *). MonadThrow m => Monad (CharonT env m)
forall env (m :: * -> *) e a.
(MonadThrow m, HasCallStack, Exception e) =>
e -> CharonT env m a
forall (m :: * -> *).
Monad m =>
(forall e a. (HasCallStack, Exception e) => e -> m a)
-> MonadThrow m
$cthrowM :: forall env (m :: * -> *) e a.
(MonadThrow m, HasCallStack, Exception e) =>
e -> CharonT env m a
throwM :: forall e a. (HasCallStack, Exception e) => e -> CharonT env m a
MonadThrow,
      Monad (CharonT env m)
Monad (CharonT env m) =>
(HasCallStack => CharonT env m ZonedTime)
-> (HasCallStack => CharonT env m Double)
-> MonadTime (CharonT env m)
HasCallStack => CharonT env m Double
HasCallStack => CharonT env m ZonedTime
forall env (m :: * -> *). MonadTime m => Monad (CharonT env m)
forall env (m :: * -> *).
(MonadTime m, HasCallStack) =>
CharonT env m Double
forall env (m :: * -> *).
(MonadTime m, HasCallStack) =>
CharonT env m ZonedTime
forall (m :: * -> *).
Monad m =>
(HasCallStack => m ZonedTime)
-> (HasCallStack => m Double) -> MonadTime m
$cgetSystemZonedTime :: forall env (m :: * -> *).
(MonadTime m, HasCallStack) =>
CharonT env m ZonedTime
getSystemZonedTime :: HasCallStack => CharonT env m ZonedTime
$cgetMonotonicTime :: forall env (m :: * -> *).
(MonadTime m, HasCallStack) =>
CharonT env m Double
getMonotonicTime :: HasCallStack => CharonT env m Double
MonadTime
    )
    via (ReaderT env m)

instance
  (MonadHandleWriter m, MonadTime m) =>
  MonadLogger (CharonT (Env m) m)
  where
  monadLoggerLog :: forall msg.
ToLogStr msg =>
Loc -> LogSource -> LogLevel -> msg -> CharonT (Env m) m ()
monadLoggerLog Loc
loc LogSource
_src LogLevel
lvl msg
msg = do
    Maybe (Handle, LogLevel)
mhandle <- (Env m -> Maybe (Handle, LogLevel))
-> CharonT (Env m) m (Maybe (Handle, LogLevel))
forall r (m :: * -> *) a. MonadReader r m => (r -> a) -> m a
asks (Optic' An_AffineTraversal NoIx (Env m) (Handle, LogLevel)
-> Env m -> Maybe (Handle, LogLevel)
forall k (is :: IxList) s a.
Is k An_AffineFold =>
Optic' k is s a -> s -> Maybe a
preview (Optic A_Lens NoIx (Env m) (Env m) (LogEnv m) (LogEnv m)
#logEnv Optic A_Lens NoIx (Env m) (Env m) (LogEnv m) (LogEnv m)
-> Optic
     A_Lens
     NoIx
     (LogEnv m)
     (LogEnv m)
     (Maybe (LogFile m))
     (Maybe (LogFile m))
-> Optic
     A_Lens NoIx (Env m) (Env m) (Maybe (LogFile m)) (Maybe (LogFile m))
forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a
       b.
(JoinKinds k l m, AppendIndices is js ks) =>
Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b
% Optic
  A_Lens
  NoIx
  (LogEnv m)
  (LogEnv m)
  (Maybe (LogFile m))
  (Maybe (LogFile m))
#logFile Optic
  A_Lens NoIx (Env m) (Env m) (Maybe (LogFile m)) (Maybe (LogFile m))
-> Optic
     A_Lens
     NoIx
     (LogFile m)
     (LogFile m)
     (Handle, LogLevel)
     (Handle, LogLevel)
-> Optic' An_AffineTraversal NoIx (Env m) (Handle, LogLevel)
forall (is :: IxList) (js :: IxList) (ks :: IxList) k k' l m s t u
       v a b.
(AppendIndices is js ks, JoinKinds k A_Prism k',
 JoinKinds k' l m) =>
Optic k is s t (Maybe u) (Maybe v)
-> Optic l js u v a b -> Optic m ks s t a b
%? Optic
  A_Lens
  NoIx
  (LogFile m)
  (LogFile m)
  (Handle, LogLevel)
  (Handle, LogLevel)
handleAndLevel))
    case Maybe (Handle, LogLevel)
mhandle of
      Maybe (Handle, LogLevel)
Nothing -> () -> CharonT (Env m) m ()
forall a. a -> CharonT (Env m) m a
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
      Just (Handle
handle, LogLevel
logLevel) -> do
        LogLevel
-> LogLevel -> CharonT (Env m) m () -> CharonT (Env m) m ()
forall (f :: * -> *).
Applicative f =>
LogLevel -> LogLevel -> f () -> f ()
guardLevel LogLevel
logLevel LogLevel
lvl (CharonT (Env m) m () -> CharonT (Env m) m ())
-> CharonT (Env m) m () -> CharonT (Env m) m ()
forall a b. (a -> b) -> a -> b
$ do
          LogStr
formatted <- LogFormatter -> LogLevel -> msg -> CharonT (Env m) m LogStr
forall (m :: * -> *) msg.
(HasCallStack, MonadLoggerNS m, MonadTime m, ToLogStr msg) =>
LogFormatter -> LogLevel -> msg -> m LogStr
Logger.formatLog (Loc -> LogFormatter
defaultLogFormatter Loc
loc) LogLevel
lvl msg
msg
          let bs :: ByteString
bs = LogStr -> ByteString
Logger.logStrToBs LogStr
formatted
          Handle -> ByteString -> CharonT (Env m) m ()
forall (m :: * -> *).
(MonadHandleWriter m, HasCallStack) =>
Handle -> ByteString -> m ()
hPut Handle
handle ByteString
bs
    where
      handleAndLevel :: Lens' (LogFile m) (Handle, LogLevel)
      handleAndLevel :: Optic
  A_Lens
  NoIx
  (LogFile m)
  (LogFile m)
  (Handle, LogLevel)
  (Handle, LogLevel)
handleAndLevel =
        (LogFile m -> (Handle, LogLevel))
-> (LogFile m -> (Handle, LogLevel) -> LogFile m)
-> Optic
     A_Lens
     NoIx
     (LogFile m)
     (LogFile m)
     (Handle, LogLevel)
     (Handle, LogLevel)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens
          (\LogFile m
lf -> (LogFile m -> Handle)
-> (LogFile m -> LogLevel)
-> (LogFile m, LogFile m)
-> (Handle, LogLevel)
forall a b c d. (a -> b) -> (c -> d) -> (a, c) -> (b, d)
forall (p :: * -> * -> *) a b c d.
Bifunctor p =>
(a -> b) -> (c -> d) -> p a c -> p b d
bimap (Optic' A_Lens NoIx (LogFile m) Handle -> LogFile m -> Handle
forall k (is :: IxList) s a.
Is k A_Getter =>
Optic' k is s a -> s -> a
view Optic' A_Lens NoIx (LogFile m) Handle
#handle) (Optic' A_Lens NoIx (LogFile m) LogLevel -> LogFile m -> LogLevel
forall k (is :: IxList) s a.
Is k A_Getter =>
Optic' k is s a -> s -> a
view Optic' A_Lens NoIx (LogFile m) LogLevel
#logLevel) (LogFile m
lf, LogFile m
lf))
          (\LogFile m
lf (Handle
h, LogLevel
ll) -> LogFile m
lf {logLevel = ll, handle = h})

instance
  (MonadHandleWriter m, MonadTime m) =>
  MonadLoggerNS (CharonT (Env m) m)
  where
  getNamespace :: HasCallStack => CharonT (Env m) m Namespace
getNamespace = (Env m -> Namespace) -> CharonT (Env m) m Namespace
forall r (m :: * -> *) a. MonadReader r m => (r -> a) -> m a
asks (Optic' A_Lens NoIx (Env m) Namespace -> Env m -> Namespace
forall k (is :: IxList) s a.
Is k A_Getter =>
Optic' k is s a -> s -> a
view (Optic A_Lens NoIx (Env m) (Env m) (LogEnv m) (LogEnv m)
#logEnv Optic A_Lens NoIx (Env m) (Env m) (LogEnv m) (LogEnv m)
-> Optic A_Lens NoIx (LogEnv m) (LogEnv m) Namespace Namespace
-> Optic' A_Lens NoIx (Env m) Namespace
forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a
       b.
(JoinKinds k l m, AppendIndices is js ks) =>
Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b
% Optic A_Lens NoIx (LogEnv m) (LogEnv m) Namespace Namespace
#logNamespace))
  localNamespace :: forall a.
HasCallStack =>
(Namespace -> Namespace)
-> CharonT (Env m) m a -> CharonT (Env m) m a
localNamespace = (Env m -> Env m) -> CharonT (Env m) m a -> CharonT (Env m) m a
forall a.
(Env m -> Env m) -> CharonT (Env m) m a -> CharonT (Env m) m a
forall r (m :: * -> *) a. MonadReader r m => (r -> r) -> m a -> m a
local ((Env m -> Env m) -> CharonT (Env m) m a -> CharonT (Env m) m a)
-> ((Namespace -> Namespace) -> Env m -> Env m)
-> (Namespace -> Namespace)
-> CharonT (Env m) m a
-> CharonT (Env m) m a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Optic' A_Lens NoIx (Env m) Namespace
-> (Namespace -> Namespace) -> Env m -> Env m
forall k (is :: IxList) s t a b.
Is k A_Setter =>
Optic k is s t a b -> (a -> b) -> s -> t
over' (Optic A_Lens NoIx (Env m) (Env m) (LogEnv m) (LogEnv m)
#logEnv Optic A_Lens NoIx (Env m) (Env m) (LogEnv m) (LogEnv m)
-> Optic A_Lens NoIx (LogEnv m) (LogEnv m) Namespace Namespace
-> Optic' A_Lens NoIx (Env m) Namespace
forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a
       b.
(JoinKinds k l m, AppendIndices is js ks) =>
Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b
% Optic A_Lens NoIx (LogEnv m) (LogEnv m) Namespace Namespace
#logNamespace)

-- | Runs a 'CharonT' with the given @env@.
runCharonT :: CharonT env m a -> env -> m a
runCharonT :: forall env (m :: * -> *) a. CharonT env m a -> env -> m a
runCharonT (MkCharonT ReaderT env m a
rdr) = ReaderT env m a -> env -> m a
forall r (m :: * -> *) a. ReaderT r m a -> r -> m a
runReaderT ReaderT env m a
rdr

-- | Flipped 'runCharonT'
usingCharonT :: env -> CharonT env m a -> m a
usingCharonT :: forall env (m :: * -> *) a. env -> CharonT env m a -> m a
usingCharonT = (CharonT env m a -> env -> m a) -> env -> CharonT env m a -> m a
forall a b c. (a -> b -> c) -> b -> a -> c
flip CharonT env m a -> env -> m a
forall env (m :: * -> *) a. CharonT env m a -> env -> m a
runCharonT