ddc-source-tetra-0.4.1.1: DDC/Source/Tetra/Prim/Base.hs
module DDC.Source.Tetra.Prim.Base
( Name (..)
, TyConTetra (..)
, OpStore (..)
, PrimTyCon (..)
, PrimArith (..))
where
import DDC.Core.Tetra
( OpStore (..)
, PrimTyCon (..)
, PrimArith (..))
-- | Names of things used in Disciple Source Tetra.
data Name
-- | A user defined variable.
= NameVar String
-- | A user defined constructor.
| NameCon String
-- Baked in things ----------------------
-- | Baked in data type constructors.
| NameTyConTetra TyConTetra
-- | Baked in store operators.
| NameOpStore OpStore
-- Machine primitives -------------------
-- | Primitive type cosntructors.
| NamePrimTyCon PrimTyCon
-- | Primitive arithmetic, logic and comparison.
| NamePrimArith PrimArith
-- Literals -----------------------------
-- | A boolean literal.
| NameLitBool Bool
-- | A natural literal.
| NameLitNat Integer
-- | An integer literal.
| NameLitInt Integer
-- | A word literal.
| NameLitWord Integer Int
-- Inference ----------------------------
-- | A hole used during type inference.
| NameHole
deriving (Eq, Ord, Show)
-- TyConTetra ----------------------------------------------------------------
-- | Baked-in type constructors.
data TyConTetra
-- | @Ref#@. Mutable reference.
= TyConTetraRef
-- | @TupleN#@. Tuples.
| TyConTetraTuple Int
deriving (Eq, Ord, Show)