ddc-build-0.3.2.1: DDC/Build/Language/Tetra.hs
-- | The `Tetra` fragment has four base kinds:
-- `Data`, `Region`, `Effect`, `Witness` and uses the `S`
-- computation type to represent effects.
module DDC.Build.Language.Tetra
( language
, bundle
, fragment
, Error (..))
where
import DDC.Build.Language.Base
import DDC.Core.Simplifier
import DDC.Core.Transform.Namify
import DDC.Core.Fragment hiding (Error(..))
import DDC.Core.Tetra as Tetra
import DDC.Core.Tetra.Profile as Tetra
import DDC.Base.Pretty
import qualified Data.Map as Map
-- | Language definition for Disciple Core Tetra.
language :: Language
language = Language bundle
-- | Language bundle for Disciple Core Tetra.
bundle :: Bundle Int Name Error
bundle
= Bundle
{ bundleFragment = fragment
, bundleModules = Map.empty
, bundleStateInit = 0 :: Int
, bundleSimplifier = Trans Id
, bundleMakeNamifierT = makeNamifier freshT
, bundleMakeNamifierX = makeNamifier freshX
, bundleRewriteRules = Map.empty }
-- | Fragement definition for Disciple Core Tetra.
fragment :: Fragment Name Error
fragment
= Fragment
{ fragmentProfile = profile
, fragmentExtension = "dct"
, fragmentReadName = readName
, fragmentLexModule = lexModuleString
, fragmentLexExp = lexExpString
, fragmentCheckModule = const Nothing
, fragmentCheckExp = const Nothing }
data Error a
= Error
deriving Show
instance Pretty (Error a) where
ppr Error = text (show Error)