module DDC.Build.Language.Base
( Language (..)
, Bundle (..))
where
import DDC.Core.Module
import DDC.Core.Fragment
import DDC.Core.Check
import DDC.Core.Simplifier
import DDC.Core.Transform.Namify
import DDC.Core.Transform.Rewrite
import DDC.Base.Pretty
import Control.DeepSeq
import Data.Typeable
import Data.Map (Map)
import DDC.Type.Env (Env)
import qualified DDC.Base.Parser as BP
data Language
= forall s n err
. ( Typeable n
, Ord n
, Show n
, Pretty n
, Pretty (err (AnTEC BP.SourcePos n))
, Pretty (err (AnTEC () n))
, NFData n)
=> Language (Bundle s n err)
data Bundle s n err
= Bundle
{
bundleFragment :: Fragment n err
, bundleModules :: Map ModuleName (Module (AnTEC () n) n)
, bundleStateInit :: s
, bundleSimplifier :: Simplifier s (AnTEC () n) n
, bundleMakeNamifierT :: Env n -> Namifier s n
, bundleMakeNamifierX :: Env n -> Namifier s n
, bundleRewriteRules :: Map String (RewriteRule (AnTEC () n) n) }