{-# LANGUAGE QualifiedDo #-} {-# LANGUAGE TypeOperators #-} {-# OPTIONS_GHC -Wno-missing-export-lists #-} module Language.Haskell.TH.Natural.Syntax.Expr.Typed.Monad where import qualified Language.Haskell.TH.Natural.Syntax.Builder.Monad as B import Language.Haskell.TH.Natural.Syntax.Expr.Typed.Builder import Prelude hiding (fail, (>>), (>>=)) {-# INLINE (>>=) #-} (>>=) :: TypedExprBuilder s args0 args0' res0 a -> (a -> TypedExprBuilder s '[] args1' res1 b) -> TypedExprBuilder s args0 (args0' :++: args1') res1 b >>= :: forall {k} {k} s (args0 :: [*]) (args0' :: [*]) (res0 :: k) a (args1' :: [*]) (res1 :: k) b. TypedExprBuilder s args0 args0' res0 a -> (a -> TypedExprBuilder s '[] args1' res1 b) -> TypedExprBuilder s args0 (args0' :++: args1') res1 b (>>=) (MkTEB ConstBuilder s a f1) a -> TypedExprBuilder s '[] args1' res1 b f2 = ConstBuilder s b -> TypedExprBuilder s args0 (args0' :++: args1') res1 b forall k s (prevArgs :: [*]) (args :: [*]) (res :: k) a. ConstBuilder s a -> TypedExprBuilder s prevArgs args res a MkTEB (ConstBuilder s b -> TypedExprBuilder s args0 (args0' :++: args1') res1 b) -> ConstBuilder s b -> TypedExprBuilder s args0 (args0' :++: args1') res1 b forall a b. (a -> b) -> a -> b $ B.do a <- ConstBuilder s a f1 unTEB (f2 a) {-# INLINE (>>) #-} (>>) :: TypedExprBuilder s args0 args0' res0 a -> TypedExprBuilder s '[] args1' res1 b -> TypedExprBuilder s args0 (args0' :++: args1') res1 b >> :: forall {k} {k} s (args0 :: [*]) (args0' :: [*]) (res0 :: k) a (args1' :: [*]) (res1 :: k) b. TypedExprBuilder s args0 args0' res0 a -> TypedExprBuilder s '[] args1' res1 b -> TypedExprBuilder s args0 (args0' :++: args1') res1 b (>>) (MkTEB ConstBuilder s a f1) (MkTEB ConstBuilder s b f2) = ConstBuilder s b -> TypedExprBuilder s args0 (args0' :++: args1') res1 b forall k s (prevArgs :: [*]) (args :: [*]) (res :: k) a. ConstBuilder s a -> TypedExprBuilder s prevArgs args res a MkTEB (ConstBuilder s b -> TypedExprBuilder s args0 (args0' :++: args1') res1 b) -> ConstBuilder s b -> TypedExprBuilder s args0 (args0' :++: args1') res1 b forall a b. (a -> b) -> a -> b $ ConstBuilder s a f1 ConstBuilder s a -> ConstBuilder s b -> ConstBuilder s b forall {k} (m :: * -> *) s (prev :: k) (curr :: k) a (next :: k) b. Monad m => BaseBuilder m s prev curr a -> BaseBuilder m s curr next b -> BaseBuilder m s prev next b B.>> ConstBuilder s b f2 fail :: String -> TypedExprBuilder s args args res a fail :: forall {k} s (args :: [*]) (res :: k) a. String -> TypedExprBuilder s args args res a fail = ConstBuilder s a -> TypedExprBuilder s args args res a forall k s (prevArgs :: [*]) (args :: [*]) (res :: k) a. ConstBuilder s a -> TypedExprBuilder s prevArgs args res a MkTEB (ConstBuilder s a -> TypedExprBuilder s args args res a) -> (String -> ConstBuilder s a) -> String -> TypedExprBuilder s args args res a forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> ConstBuilder s a forall {k} (m :: * -> *) s (prev :: k) (curr :: k) a. MonadFail m => String -> BaseBuilder m s prev curr a B.fail