elara
Safe HaskellNone
LanguageGHC2024

Elara.Core

Synopsis

Documentation

data TypeVariable Source #

Constructors

TypeVariable 

Instances

Instances details
Data TypeVariable Source # 
Instance details

Defined in Elara.Core

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TypeVariable -> c TypeVariable #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TypeVariable #

toConstr :: TypeVariable -> Constr #

dataTypeOf :: TypeVariable -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c TypeVariable) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TypeVariable) #

gmapT :: (forall b. Data b => b -> b) -> TypeVariable -> TypeVariable #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TypeVariable -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TypeVariable -> r #

gmapQ :: (forall d. Data d => d -> u) -> TypeVariable -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> TypeVariable -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> TypeVariable -> m TypeVariable #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TypeVariable -> m TypeVariable #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TypeVariable -> m TypeVariable #

Generic TypeVariable Source # 
Instance details

Defined in Elara.Core

Associated Types

type Rep TypeVariable 
Instance details

Defined in Elara.Core

type Rep TypeVariable = D1 ('MetaData "TypeVariable" "Elara.Core" "elara-0.1.0-inplace" 'False) (C1 ('MetaCons "TypeVariable" 'PrefixI 'True) (S1 ('MetaSel ('Just "tvName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UniqueTyVar) :*: S1 ('MetaSel ('Just "tvKind") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ElaraKind)))
Show TypeVariable Source # 
Instance details

Defined in Elara.Core

Eq TypeVariable Source # 
Instance details

Defined in Elara.Core

Ord TypeVariable Source # 
Instance details

Defined in Elara.Core

type Rep TypeVariable Source # 
Instance details

Defined in Elara.Core

type Rep TypeVariable = D1 ('MetaData "TypeVariable" "Elara.Core" "elara-0.1.0-inplace" 'False) (C1 ('MetaCons "TypeVariable" 'PrefixI 'True) (S1 ('MetaSel ('Just "tvName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 UniqueTyVar) :*: S1 ('MetaSel ('Just "tvKind") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ElaraKind)))

data Var Source #

Instances

Instances details
PrettyVar Var Source # 
Instance details

Defined in Elara.Core.Pretty

Pretty Var Source # 
Instance details

Defined in Elara.Core.Pretty

Data Var Source # 
Instance details

Defined in Elara.Core

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Var -> c Var #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Var #

toConstr :: Var -> Constr #

dataTypeOf :: Var -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Var) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Var) #

gmapT :: (forall b. Data b => b -> b) -> Var -> Var #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Var -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Var -> r #

gmapQ :: (forall d. Data d => d -> u) -> Var -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Var -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Var -> m Var #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Var -> m Var #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Var -> m Var #

Generic Var Source # 
Instance details

Defined in Elara.Core

Methods

from :: Var -> Rep Var x #

to :: Rep Var x -> Var #

Show Var Source # 
Instance details

Defined in Elara.Core

Methods

showsPrec :: Int -> Var -> ShowS #

show :: Var -> String #

showList :: [Var] -> ShowS #

Eq Var Source # 
Instance details

Defined in Elara.Core

Methods

(==) :: Var -> Var -> Bool #

(/=) :: Var -> Var -> Bool #

Ord Var Source # 
Instance details

Defined in Elara.Core

Methods

compare :: Var -> Var -> Ordering #

(<) :: Var -> Var -> Bool #

(<=) :: Var -> Var -> Bool #

(>) :: Var -> Var -> Bool #

(>=) :: Var -> Var -> Bool #

max :: Var -> Var -> Var #

min :: Var -> Var -> Var #

Pretty (AExpr Var) Source # 
Instance details

Defined in Elara.Core.Pretty

Pretty (CExpr Var) Source # 
Instance details

Defined in Elara.Core.Pretty

Pretty (Expr Var) Source # 
Instance details

Defined in Elara.Core.Pretty

HasDependencies (CoreModule CoreBind) Source # 
Instance details

Defined in Elara.Core.Module

Associated Types

type Key (CoreModule CoreBind) 
Instance details

Defined in Elara.Core.Module

HasDependencies (CoreModule (TopLevelBind Var)) Source # 
Instance details

Defined in Elara.Core.Module

Associated Types

type Key (CoreModule (TopLevelBind Var)) 
Instance details

Defined in Elara.Core.Module

type Rep Var Source # 
Instance details

Defined in Elara.Core

type Key (CoreModule CoreBind) Source # 
Instance details

Defined in Elara.Core.Module

type Key (CoreModule (TopLevelBind Var)) Source # 
Instance details

Defined in Elara.Core.Module

data Expr b Source #

Constructors

Var b 
Lit Literal 
App (Expr b) (Expr b) 
TyApp (Expr b) Type 
Lam b (Expr b) 
TyLam Type (Expr b) 
Let (Bind b) (Expr b) 
Match (Expr b) (Maybe b) [Alt b] 

Instances

Instances details
FreeCoreVars Expr Source # 
Instance details

Defined in Elara.Core.Analysis

Methods

freeCoreVars :: Ord b => Expr b -> Set b Source #

PrettyVar v => Pretty (Expr v) Source # 
Instance details

Defined in Elara.Core.Pretty

Methods

pretty :: Expr v -> Doc AnsiStyle Source #

HasDependencies (CoreModule CoreBind) Source # 
Instance details

Defined in Elara.Core.Module

Associated Types

type Key (CoreModule CoreBind) 
Instance details

Defined in Elara.Core.Module

Data b => Data (Expr b) Source # 
Instance details

Defined in Elara.Core

Methods

gfoldl :: (forall d b0. Data d => c (d -> b0) -> d -> c b0) -> (forall g. g -> c g) -> Expr b -> c (Expr b) #

gunfold :: (forall b0 r. Data b0 => c (b0 -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Expr b) #

toConstr :: Expr b -> Constr #

dataTypeOf :: Expr b -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Expr b)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Expr b)) #

gmapT :: (forall b0. Data b0 => b0 -> b0) -> Expr b -> Expr b #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Expr b -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Expr b -> r #

gmapQ :: (forall d. Data d => d -> u) -> Expr b -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Expr b -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Expr b -> m (Expr b) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Expr b -> m (Expr b) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Expr b -> m (Expr b) #

Generic (Expr b) Source # 
Instance details

Defined in Elara.Core

Associated Types

type Rep (Expr b) 
Instance details

Defined in Elara.Core

type Rep (Expr b) = D1 ('MetaData "Expr" "Elara.Core" "elara-0.1.0-inplace" 'False) (((C1 ('MetaCons "Var" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 b)) :+: C1 ('MetaCons "Lit" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Literal))) :+: (C1 ('MetaCons "App" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr b)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr b))) :+: C1 ('MetaCons "TyApp" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr b)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))) :+: ((C1 ('MetaCons "Lam" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 b) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr b))) :+: C1 ('MetaCons "TyLam" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr b)))) :+: (C1 ('MetaCons "Let" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Bind b)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr b))) :+: C1 ('MetaCons "Match" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr b)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe b)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Alt b]))))))

Methods

from :: Expr b -> Rep (Expr b) x #

to :: Rep (Expr b) x -> Expr b #

Show b => Show (Expr b) Source # 
Instance details

Defined in Elara.Core

Methods

showsPrec :: Int -> Expr b -> ShowS #

show :: Expr b -> String #

showList :: [Expr b] -> ShowS #

Eq b => Eq (Expr b) Source # 
Instance details

Defined in Elara.Core

Methods

(==) :: Expr b -> Expr b -> Bool #

(/=) :: Expr b -> Expr b -> Bool #

Generic b => Plated (Expr b) (Expr b) Source # 
Instance details

Defined in Elara.Core

Methods

plate :: Traversal' (Expr b) (Expr b) Source #

type Key (CoreModule CoreBind) Source # 
Instance details

Defined in Elara.Core.Module

type Rep (Expr b) Source # 
Instance details

Defined in Elara.Core

type Rep (Expr b) = D1 ('MetaData "Expr" "Elara.Core" "elara-0.1.0-inplace" 'False) (((C1 ('MetaCons "Var" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 b)) :+: C1 ('MetaCons "Lit" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Literal))) :+: (C1 ('MetaCons "App" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr b)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr b))) :+: C1 ('MetaCons "TyApp" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr b)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type)))) :+: ((C1 ('MetaCons "Lam" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 b) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr b))) :+: C1 ('MetaCons "TyLam" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr b)))) :+: (C1 ('MetaCons "Let" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Bind b)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr b))) :+: C1 ('MetaCons "Match" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr b)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe b)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Alt b]))))))

type Bind b = Bind b Expr Source #

type Alt b = (AltCon, [b], Expr b) Source #

data AltCon Source #

Instances

Instances details
Pretty AltCon Source # 
Instance details

Defined in Elara.Core.Pretty

Data AltCon Source # 
Instance details

Defined in Elara.Core

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> AltCon -> c AltCon #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c AltCon #

toConstr :: AltCon -> Constr #

dataTypeOf :: AltCon -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c AltCon) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c AltCon) #

gmapT :: (forall b. Data b => b -> b) -> AltCon -> AltCon #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> AltCon -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> AltCon -> r #

gmapQ :: (forall d. Data d => d -> u) -> AltCon -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> AltCon -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> AltCon -> m AltCon #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> AltCon -> m AltCon #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> AltCon -> m AltCon #

Generic AltCon Source # 
Instance details

Defined in Elara.Core

Associated Types

type Rep AltCon 
Instance details

Defined in Elara.Core

Methods

from :: AltCon -> Rep AltCon x #

to :: Rep AltCon x -> AltCon #

Show AltCon Source # 
Instance details

Defined in Elara.Core

Eq AltCon Source # 
Instance details

Defined in Elara.Core

Methods

(==) :: AltCon -> AltCon -> Bool #

(/=) :: AltCon -> AltCon -> Bool #

Ord AltCon Source # 
Instance details

Defined in Elara.Core

type Rep AltCon Source # 
Instance details

Defined in Elara.Core

data DataCon Source #

A data constructor.

Constructors

DataCon 

Fields

  • name :: Qualified Text

    The name of the data constructor

  • dataConType :: Type

    The type of the data constructor, i.e. `type Foo a = Bar a` would have a data constructor with type `a -> Foo a`

  • dataConDataType :: TyCon

    The type of the data type the data constructor belongs to, i.e. `type Foo a = Bar a` would have a DataCon for `Bar a` with dataConDataType = Foo a. This should be identical to functionTypeResult . dataConType

Instances

Instances details
Pretty DataCon Source # 
Instance details

Defined in Elara.Core.Pretty

Data DataCon Source # 
Instance details

Defined in Elara.Core

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DataCon -> c DataCon #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c DataCon #

toConstr :: DataCon -> Constr #

dataTypeOf :: DataCon -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c DataCon) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DataCon) #

gmapT :: (forall b. Data b => b -> b) -> DataCon -> DataCon #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DataCon -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DataCon -> r #

gmapQ :: (forall d. Data d => d -> u) -> DataCon -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> DataCon -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> DataCon -> m DataCon #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DataCon -> m DataCon #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DataCon -> m DataCon #

Generic DataCon Source # 
Instance details

Defined in Elara.Core

Associated Types

type Rep DataCon 
Instance details

Defined in Elara.Core

type Rep DataCon = D1 ('MetaData "DataCon" "Elara.Core" "elara-0.1.0-inplace" 'False) (C1 ('MetaCons "DataCon" 'PrefixI 'True) (S1 ('MetaSel ('Just "name") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Qualified Text)) :*: (S1 ('MetaSel ('Just "dataConType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Just "dataConDataType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TyCon))))

Methods

from :: DataCon -> Rep DataCon x #

to :: Rep DataCon x -> DataCon #

Show DataCon Source # 
Instance details

Defined in Elara.Core

Eq DataCon Source # 
Instance details

Defined in Elara.Core

Methods

(==) :: DataCon -> DataCon -> Bool #

(/=) :: DataCon -> DataCon -> Bool #

Ord DataCon Source # 
Instance details

Defined in Elara.Core

type Rep DataCon Source # 
Instance details

Defined in Elara.Core

type Rep DataCon = D1 ('MetaData "DataCon" "Elara.Core" "elara-0.1.0-inplace" 'False) (C1 ('MetaCons "DataCon" 'PrefixI 'True) (S1 ('MetaSel ('Just "name") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Qualified Text)) :*: (S1 ('MetaSel ('Just "dataConType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Type) :*: S1 ('MetaSel ('Just "dataConDataType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TyCon))))

data Type Source #

Constructors

TyVarTy TypeVariable

A type variable, a

FuncTy Type Type

A function type, t -> t'

AppTy Type Type

An application of a type constructor, TC t

ConTy TyCon

A type constructor, TC

ForAllTy !TypeVariable !Type

A forall quantified type, forall a. T

Instances

Instances details
PrettyVar Type Source # 
Instance details

Defined in Elara.Core.Pretty

Pretty Type Source # 
Instance details

Defined in Elara.Core.Pretty

Data Type Source # 
Instance details

Defined in Elara.Core

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Type -> c Type #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Type #

toConstr :: Type -> Constr #

dataTypeOf :: Type -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Type) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Type) #

gmapT :: (forall b. Data b => b -> b) -> Type -> Type #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Type -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Type -> r #

gmapQ :: (forall d. Data d => d -> u) -> Type -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Type -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Type -> m Type #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Type -> m Type #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Type -> m Type #

Generic Type Source # 
Instance details

Defined in Elara.Core

Methods

from :: Type -> Rep Type x #

to :: Rep Type x -> Type #

Show Type Source # 
Instance details

Defined in Elara.Core

Methods

showsPrec :: Int -> Type -> ShowS #

show :: Type -> String #

showList :: [Type] -> ShowS #

Eq Type Source # 
Instance details

Defined in Elara.Core

Methods

(==) :: Type -> Type -> Bool #

(/=) :: Type -> Type -> Bool #

Ord Type Source # 
Instance details

Defined in Elara.Core

Methods

compare :: Type -> Type -> Ordering #

(<) :: Type -> Type -> Bool #

(<=) :: Type -> Type -> Bool #

(>) :: Type -> Type -> Bool #

(>=) :: Type -> Type -> Bool #

max :: Type -> Type -> Type #

min :: Type -> Type -> Type #

(Generic x, SafeGPlate (Rep x) Type, GPlate Type x) => Plated Type x Source # 
Instance details

Defined in Elara.Core

type Rep Type Source # 
Instance details

Defined in Elara.Core

data TyCon Source #

Information about a type constructor

Constructors

TyCon 

Fields

Instances

Instances details
Pretty TyCon Source # 
Instance details

Defined in Elara.Core.Pretty

Data TyCon Source # 
Instance details

Defined in Elara.Core

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TyCon -> c TyCon #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TyCon #

toConstr :: TyCon -> Constr #

dataTypeOf :: TyCon -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c TyCon) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TyCon) #

gmapT :: (forall b. Data b => b -> b) -> TyCon -> TyCon #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TyCon -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TyCon -> r #

gmapQ :: (forall d. Data d => d -> u) -> TyCon -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> TyCon -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> TyCon -> m TyCon #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TyCon -> m TyCon #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TyCon -> m TyCon #

Generic TyCon Source # 
Instance details

Defined in Elara.Core

Associated Types

type Rep TyCon 
Instance details

Defined in Elara.Core

Methods

from :: TyCon -> Rep TyCon x #

to :: Rep TyCon x -> TyCon #

Show TyCon Source # 
Instance details

Defined in Elara.Core

Methods

showsPrec :: Int -> TyCon -> ShowS #

show :: TyCon -> String #

showList :: [TyCon] -> ShowS #

Eq TyCon Source # 
Instance details

Defined in Elara.Core

Methods

(==) :: TyCon -> TyCon -> Bool #

(/=) :: TyCon -> TyCon -> Bool #

Ord TyCon Source # 
Instance details

Defined in Elara.Core

Methods

compare :: TyCon -> TyCon -> Ordering #

(<) :: TyCon -> TyCon -> Bool #

(<=) :: TyCon -> TyCon -> Bool #

(>) :: TyCon -> TyCon -> Bool #

(>=) :: TyCon -> TyCon -> Bool #

max :: TyCon -> TyCon -> TyCon #

min :: TyCon -> TyCon -> TyCon #

type Rep TyCon Source # 
Instance details

Defined in Elara.Core

data TyConDetails Source #

The details of a type constructor, mainly about its definition

Constructors

TyADT

An ADT

Fields

TyAlias Type 
Prim 

Instances

Instances details
Pretty TyConDetails Source # 
Instance details

Defined in Elara.Core.Pretty

Data TyConDetails Source # 
Instance details

Defined in Elara.Core

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> TyConDetails -> c TyConDetails #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c TyConDetails #

toConstr :: TyConDetails -> Constr #

dataTypeOf :: TyConDetails -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c TyConDetails) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c TyConDetails) #

gmapT :: (forall b. Data b => b -> b) -> TyConDetails -> TyConDetails #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> TyConDetails -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> TyConDetails -> r #

gmapQ :: (forall d. Data d => d -> u) -> TyConDetails -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> TyConDetails -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> TyConDetails -> m TyConDetails #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> TyConDetails -> m TyConDetails #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> TyConDetails -> m TyConDetails #

Generic TyConDetails Source # 
Instance details

Defined in Elara.Core

Associated Types

type Rep TyConDetails 
Instance details

Defined in Elara.Core

Show TyConDetails Source # 
Instance details

Defined in Elara.Core

Eq TyConDetails Source # 
Instance details

Defined in Elara.Core

Ord TyConDetails Source # 
Instance details

Defined in Elara.Core

type Rep TyConDetails Source # 
Instance details

Defined in Elara.Core

typeArity :: Type -> Int Source #

The arity of a function type

data Literal Source #

Constructors

Int !Integer 
String !Text 
Char !Char 
Double !Double 
Unit 

Instances

Instances details
Pretty Literal Source # 
Instance details

Defined in Elara.Core.Pretty

Data Literal Source # 
Instance details

Defined in Elara.Core

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Literal -> c Literal #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Literal #

toConstr :: Literal -> Constr #

dataTypeOf :: Literal -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Literal) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Literal) #

gmapT :: (forall b. Data b => b -> b) -> Literal -> Literal #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Literal -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Literal -> r #

gmapQ :: (forall d. Data d => d -> u) -> Literal -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Literal -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Literal -> m Literal #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Literal -> m Literal #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Literal -> m Literal #

Generic Literal Source # 
Instance details

Defined in Elara.Core

Methods

from :: Literal -> Rep Literal x #

to :: Rep Literal x -> Literal #

Show Literal Source # 
Instance details

Defined in Elara.Core

Eq Literal Source # 
Instance details

Defined in Elara.Core

Methods

(==) :: Literal -> Literal -> Bool #

(/=) :: Literal -> Literal -> Bool #

Ord Literal Source # 
Instance details

Defined in Elara.Core

Hashable Literal Source # 
Instance details

Defined in Elara.Core

Methods

hashWithSalt :: Int -> Literal -> Int #

hash :: Literal -> Int #

type Rep Literal Source # 
Instance details

Defined in Elara.Core