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)
data Language
= forall s n err
. ( Typeable n
, Ord n
, Show n
, Pretty 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) }