content: {-# LANGUAGE MagicHash, UnboxedTuples #-}
  {-|
  Module      : Parsley.Internal.Backend.Machine.Types.Dynamics
  Description : Representation of components that cross function boundaries
  License     : BSD-3-Clause
  Maintainer  : Jamie Willis
  Stability   : experimental
  
  This module contains the types that represent information that crosses
  a function boundary.
  
  @since 1.4.0.0
  -}
  module Parsley.Internal.Backend.Machine.Types.Dynamics (
      module Parsley.Internal.Backend.Machine.Types.Dynamics
    ) where
  
  import Data.Kind                                   (Type)
  import Parsley.Internal.Backend.Machine.Types.Base (Handler#, Cont#, Subroutine#, Func)
  import Parsley.Internal.Common.Utils               (Code)
  
  {-|
  Template Haskell representation of `Parsley.Internal.Backend.Machine.Types.Base.Handler#`
  
  @since 1.4.0.0
  -}
  type DynHandler s o a = Code (Handler# s o a)
  
  {-|
  Template Haskell representation of `Parsley.Internal.Backend.Machine.Types.Base.Cont#`
  
  @since 1.4.0.0
  -}
  type DynCont s o a x = Code (Cont# s o a x)
  
  {-|
  Template Haskell representation of `Parsley.Internal.Backend.Machine.Types.Base.Subroutine#`
  
  @since 1.4.0.0
  -}
  type DynSubroutine s o a x = Code (Subroutine# s o a x)
  
  {-|
  Template Haskell representation of `Parsley.Internal.Backend.Machine.Types.Base.Func#`
  
  @since 1.4.0.0
  -}
  type DynFunc (rs :: [Type]) s o a x = Code (Func rs s o a x)
  