mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-17 04:24:35 +03:00
11a454c2d6
This commit applies ormolu to the whole Haskell code base by running `make format`. For in-flight branches, simply merging changes from `main` will result in merge conflicts. To avoid this, update your branch using the following instructions. Replace `<format-commit>` by the hash of *this* commit. $ git checkout my-feature-branch $ git merge <format-commit>^ # and resolve conflicts normally $ make format $ git commit -a -m "reformat with ormolu" $ git merge -s ours post-ormolu https://github.com/hasura/graphql-engine-mono/pull/2404 GitOrigin-RevId: 75049f5c12f430c615eafb4c6b8e83e371e01c8e
27 lines
799 B
Haskell
27 lines
799 B
Haskell
{-# LANGUAGE UndecidableInstances #-}
|
|
|
|
module Control.Monad.Stateless
|
|
( MonadStateless (..),
|
|
)
|
|
where
|
|
|
|
import Control.Monad.Trans.Control
|
|
import Data.Type.Equality
|
|
import Prelude
|
|
|
|
class (MonadBaseControl b m, forall a. StatelessProof m a) => MonadStateless b m | m -> b where
|
|
liftWithStateless :: ((forall a. m a -> b a) -> b c) -> m c
|
|
|
|
instance (MonadBaseControl b m, forall a. StatelessProof m a) => MonadStateless b m where
|
|
liftWithStateless f = liftBaseWith $ \lowerBase ->
|
|
let lowerBasePure :: forall a. m a -> b a
|
|
lowerBasePure m = case statelessProof @m @a of
|
|
Refl -> lowerBase m
|
|
in f lowerBasePure
|
|
|
|
class (StM m a ~ a) => StatelessProof m a where
|
|
statelessProof :: StM m a :~: a
|
|
|
|
instance (StM m a ~ a) => StatelessProof m a where
|
|
statelessProof = Refl
|