elara
Safe HaskellNone
LanguageGHC2024

Elara.AST.Types

Synopsis

Documentation

data Expr loc (p :: k) Source #

Expression node with location and metadata

Constructors

Expr !loc !(ExpressionMeta p loc) (Expr' loc p) 

Instances

Instances details
PrettyPhaseLoc Frontend loc => Pretty (Expr loc Frontend) Source # 
Instance details

Defined in Elara.AST.Phases.Frontend.Pretty

Generic (Expr loc p) Source # 
Instance details

Defined in Elara.AST.Types

Associated Types

type Rep (Expr loc p) 
Instance details

Defined in Elara.AST.Types

Methods

from :: Expr loc p -> Rep (Expr loc p) x #

to :: Rep (Expr loc p) x -> Expr loc p #

CoreConstraint Show loc p => Show (Expr loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

showsPrec :: Int -> Expr loc p -> ShowS #

show :: Expr loc p -> String #

showList :: [Expr loc p] -> ShowS #

CoreConstraint Eq loc p => Eq (Expr loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

(==) :: Expr loc p -> Expr loc p -> Bool #

(/=) :: Expr loc p -> Expr loc p -> Bool #

CoreConstraint Ord loc p => Ord (Expr loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

compare :: Expr loc p -> Expr loc p -> Ordering #

(<) :: Expr loc p -> Expr loc p -> Bool #

(<=) :: Expr loc p -> Expr loc p -> Bool #

(>) :: Expr loc p -> Expr loc p -> Bool #

(>=) :: Expr loc p -> Expr loc p -> Bool #

max :: Expr loc p -> Expr loc p -> Expr loc p #

min :: Expr loc p -> Expr loc p -> Expr loc p #

(Generic c, SafeGPlate (Rep c) (Expr loc phase), GPlate (Expr loc phase) c) => Plated (Expr loc phase) c Source # 
Instance details

Defined in Elara.AST.Instances

Methods

plate :: Traversal' c (Expr loc phase) Source #

type Rep (Expr loc p) Source # 
Instance details

Defined in Elara.AST.Types

data Expr' loc (p :: k) Source #

Expression syntax

Constructors

EInt Integer 
EFloat Double 
EString Text 
EChar Char 
EUnit 
EVar (VariableExtension p) (ValueOccurrence p loc) 
ECon (ConstructorNodeExtension p) (ConstructorOccurrence p loc) 
ELam (LambdaExtension p) (LambdaBinder p loc) (Expr loc p) 
EApp (ApplicationExtension p) (Expr loc p) (Expr loc p) 
ETyApp (Expr loc p) (Type loc p) 
EIf (Expr loc p) (Expr loc p) (Expr loc p) 
EMatch (Expr loc p) [(Pattern loc p, Expr loc p)] 
ELetIn (LetExtension p) (ValueBinder p loc) (Expr loc p) (Expr loc p) 
ELet (LetExtension p) (ValueBinder p loc) (Expr loc p) 
EBlock (NonEmpty (Expr loc p)) 
EAnn (Expr loc p) (Type loc p) 
EExtension (ExpressionExtension p loc) 

Instances

Instances details
Generic (Expr' loc p) Source # 
Instance details

Defined in Elara.AST.Types

Associated Types

type Rep (Expr' loc p) 
Instance details

Defined in Elara.AST.Types

type Rep (Expr' loc p) = D1 ('MetaData "Expr'" "Elara.AST.Types" "elara-0.1.0-inplace" 'False) ((((C1 ('MetaCons "EInt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer)) :+: C1 ('MetaCons "EFloat" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Double))) :+: (C1 ('MetaCons "EString" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :+: C1 ('MetaCons "EChar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Char)))) :+: ((C1 ('MetaCons "EUnit" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "EVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (VariableExtension p)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ValueOccurrence p loc)))) :+: (C1 ('MetaCons "ECon" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ConstructorNodeExtension p)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ConstructorOccurrence p loc))) :+: C1 ('MetaCons "ELam" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LambdaExtension p)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LambdaBinder p loc)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p))))))) :+: (((C1 ('MetaCons "EApp" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ApplicationExtension p)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p)))) :+: C1 ('MetaCons "ETyApp" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type loc p)))) :+: (C1 ('MetaCons "EIf" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p)))) :+: C1 ('MetaCons "EMatch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Pattern loc p, Expr loc p)])))) :+: ((C1 ('MetaCons "ELetIn" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LetExtension p)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ValueBinder p loc))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p)))) :+: C1 ('MetaCons "ELet" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LetExtension p)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ValueBinder p loc)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p))))) :+: (C1 ('MetaCons "EBlock" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (Expr loc p)))) :+: (C1 ('MetaCons "EAnn" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type loc p))) :+: C1 ('MetaCons "EExtension" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ExpressionExtension p loc))))))))

Methods

from :: Expr' loc p -> Rep (Expr' loc p) x #

to :: Rep (Expr' loc p) x -> Expr' loc p #

CoreConstraint Show loc p => Show (Expr' loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

showsPrec :: Int -> Expr' loc p -> ShowS #

show :: Expr' loc p -> String #

showList :: [Expr' loc p] -> ShowS #

CoreConstraint Eq loc p => Eq (Expr' loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

(==) :: Expr' loc p -> Expr' loc p -> Bool #

(/=) :: Expr' loc p -> Expr' loc p -> Bool #

CoreConstraint Ord loc p => Ord (Expr' loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

compare :: Expr' loc p -> Expr' loc p -> Ordering #

(<) :: Expr' loc p -> Expr' loc p -> Bool #

(<=) :: Expr' loc p -> Expr' loc p -> Bool #

(>) :: Expr' loc p -> Expr' loc p -> Bool #

(>=) :: Expr' loc p -> Expr' loc p -> Bool #

max :: Expr' loc p -> Expr' loc p -> Expr' loc p #

min :: Expr' loc p -> Expr' loc p -> Expr' loc p #

type Rep (Expr' loc p) Source # 
Instance details

Defined in Elara.AST.Types

type Rep (Expr' loc p) = D1 ('MetaData "Expr'" "Elara.AST.Types" "elara-0.1.0-inplace" 'False) ((((C1 ('MetaCons "EInt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer)) :+: C1 ('MetaCons "EFloat" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Double))) :+: (C1 ('MetaCons "EString" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :+: C1 ('MetaCons "EChar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Char)))) :+: ((C1 ('MetaCons "EUnit" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "EVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (VariableExtension p)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ValueOccurrence p loc)))) :+: (C1 ('MetaCons "ECon" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ConstructorNodeExtension p)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ConstructorOccurrence p loc))) :+: C1 ('MetaCons "ELam" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LambdaExtension p)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LambdaBinder p loc)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p))))))) :+: (((C1 ('MetaCons "EApp" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ApplicationExtension p)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p)))) :+: C1 ('MetaCons "ETyApp" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type loc p)))) :+: (C1 ('MetaCons "EIf" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p)))) :+: C1 ('MetaCons "EMatch" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [(Pattern loc p, Expr loc p)])))) :+: ((C1 ('MetaCons "ELetIn" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LetExtension p)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ValueBinder p loc))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p)))) :+: C1 ('MetaCons "ELet" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (LetExtension p)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ValueBinder p loc)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p))))) :+: (C1 ('MetaCons "EBlock" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (Expr loc p)))) :+: (C1 ('MetaCons "EAnn" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type loc p))) :+: C1 ('MetaCons "EExtension" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ExpressionExtension p loc))))))))

data Pattern loc (p :: k) Source #

Pattern node with location and metadata

Constructors

Pattern !loc !(PatternMeta p loc) (Pattern' loc p) 

Instances

Instances details
PrettyPhaseLoc Frontend loc => Pretty (Pattern loc Frontend) Source # 
Instance details

Defined in Elara.AST.Phases.Frontend.Pretty

Generic (Pattern loc p) Source # 
Instance details

Defined in Elara.AST.Types

Associated Types

type Rep (Pattern loc p) 
Instance details

Defined in Elara.AST.Types

Methods

from :: Pattern loc p -> Rep (Pattern loc p) x #

to :: Rep (Pattern loc p) x -> Pattern loc p #

CoreConstraint Show loc p => Show (Pattern loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

showsPrec :: Int -> Pattern loc p -> ShowS #

show :: Pattern loc p -> String #

showList :: [Pattern loc p] -> ShowS #

CoreConstraint Eq loc p => Eq (Pattern loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

(==) :: Pattern loc p -> Pattern loc p -> Bool #

(/=) :: Pattern loc p -> Pattern loc p -> Bool #

CoreConstraint Ord loc p => Ord (Pattern loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

compare :: Pattern loc p -> Pattern loc p -> Ordering #

(<) :: Pattern loc p -> Pattern loc p -> Bool #

(<=) :: Pattern loc p -> Pattern loc p -> Bool #

(>) :: Pattern loc p -> Pattern loc p -> Bool #

(>=) :: Pattern loc p -> Pattern loc p -> Bool #

max :: Pattern loc p -> Pattern loc p -> Pattern loc p #

min :: Pattern loc p -> Pattern loc p -> Pattern loc p #

(Generic c, SafeGPlate (Rep c) (Pattern loc phase), GPlate (Pattern loc phase) c) => Plated (Pattern loc phase) c Source # 
Instance details

Defined in Elara.AST.Instances

Methods

plate :: Traversal' c (Pattern loc phase) Source #

type Rep (Pattern loc p) Source # 
Instance details

Defined in Elara.AST.Types

data Pattern' loc (p :: k) Source #

Pattern syntax

Instances

Instances details
Generic (Pattern' loc p) Source # 
Instance details

Defined in Elara.AST.Types

Associated Types

type Rep (Pattern' loc p) 
Instance details

Defined in Elara.AST.Types

type Rep (Pattern' loc p) = D1 ('MetaData "Pattern'" "Elara.AST.Types" "elara-0.1.0-inplace" 'False) (((C1 ('MetaCons "PVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ValueBinder p loc))) :+: C1 ('MetaCons "PCon" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ConstructorOccurrence p loc)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Pattern loc p]))) :+: (C1 ('MetaCons "PWildcard" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PInt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer)))) :+: ((C1 ('MetaCons "PFloat" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Double)) :+: C1 ('MetaCons "PString" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))) :+: (C1 ('MetaCons "PChar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Char)) :+: (C1 ('MetaCons "PUnit" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PExtension" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (PatternExtension p loc)))))))

Methods

from :: Pattern' loc p -> Rep (Pattern' loc p) x #

to :: Rep (Pattern' loc p) x -> Pattern' loc p #

CoreConstraint Show loc p => Show (Pattern' loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

showsPrec :: Int -> Pattern' loc p -> ShowS #

show :: Pattern' loc p -> String #

showList :: [Pattern' loc p] -> ShowS #

CoreConstraint Eq loc p => Eq (Pattern' loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

(==) :: Pattern' loc p -> Pattern' loc p -> Bool #

(/=) :: Pattern' loc p -> Pattern' loc p -> Bool #

CoreConstraint Ord loc p => Ord (Pattern' loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

compare :: Pattern' loc p -> Pattern' loc p -> Ordering #

(<) :: Pattern' loc p -> Pattern' loc p -> Bool #

(<=) :: Pattern' loc p -> Pattern' loc p -> Bool #

(>) :: Pattern' loc p -> Pattern' loc p -> Bool #

(>=) :: Pattern' loc p -> Pattern' loc p -> Bool #

max :: Pattern' loc p -> Pattern' loc p -> Pattern' loc p #

min :: Pattern' loc p -> Pattern' loc p -> Pattern' loc p #

type Rep (Pattern' loc p) Source # 
Instance details

Defined in Elara.AST.Types

type Rep (Pattern' loc p) = D1 ('MetaData "Pattern'" "Elara.AST.Types" "elara-0.1.0-inplace" 'False) (((C1 ('MetaCons "PVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ValueBinder p loc))) :+: C1 ('MetaCons "PCon" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ConstructorOccurrence p loc)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Pattern loc p]))) :+: (C1 ('MetaCons "PWildcard" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PInt" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Integer)))) :+: ((C1 ('MetaCons "PFloat" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Double)) :+: C1 ('MetaCons "PString" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))) :+: (C1 ('MetaCons "PChar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Char)) :+: (C1 ('MetaCons "PUnit" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "PExtension" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (PatternExtension p loc)))))))

data Type loc (p :: k) Source #

Type node with location and metadata

Constructors

Type !loc !(TypeMeta p loc) (Type' loc p) 

Instances

Instances details
PrettyPhaseLoc Frontend loc => Pretty (Type loc Frontend) Source # 
Instance details

Defined in Elara.AST.Phases.Frontend.Pretty

Generic (Type loc p) Source # 
Instance details

Defined in Elara.AST.Types

Associated Types

type Rep (Type loc p) 
Instance details

Defined in Elara.AST.Types

Methods

from :: Type loc p -> Rep (Type loc p) x #

to :: Rep (Type loc p) x -> Type loc p #

CoreConstraint Show loc p => Show (Type loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

showsPrec :: Int -> Type loc p -> ShowS #

show :: Type loc p -> String #

showList :: [Type loc p] -> ShowS #

CoreConstraint Eq loc p => Eq (Type loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

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

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

CoreConstraint Ord loc p => Ord (Type loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

compare :: Type loc p -> Type loc p -> Ordering #

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

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

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

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

max :: Type loc p -> Type loc p -> Type loc p #

min :: Type loc p -> Type loc p -> Type loc p #

(Generic c, SafeGPlate (Rep c) (Type loc phase), GPlate (Type loc phase) c) => Plated (Type loc phase) c Source # 
Instance details

Defined in Elara.AST.Instances

Methods

plate :: Traversal' c (Type loc phase) Source #

PhaseCoerce (Type SourceRegion Renamed) (Type SourceRegion Shunted) Source # 
Instance details

Defined in Elara.Shunt

type Rep (Type loc p) Source # 
Instance details

Defined in Elara.AST.Types

data Type' loc (p :: k) Source #

Type syntax

Constructors

TVar (TypeVariable p loc) 
TFun (Type loc p) (Type loc p) 
TUnit 
TApp (Type loc p) (Type loc p) 
TUserDefined (TypeOccurrence p loc) 
TRecord (NonEmpty (Locate loc LowerAlphaName, Type loc p)) 
TList (Type loc p) 
TExtension (TypeSyntaxExtension p loc) 

Instances

Instances details
Generic (Type' loc p) Source # 
Instance details

Defined in Elara.AST.Types

Associated Types

type Rep (Type' loc p) 
Instance details

Defined in Elara.AST.Types

type Rep (Type' loc p) = D1 ('MetaData "Type'" "Elara.AST.Types" "elara-0.1.0-inplace" 'False) (((C1 ('MetaCons "TVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TypeVariable p loc))) :+: C1 ('MetaCons "TFun" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type loc p)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type loc p)))) :+: (C1 ('MetaCons "TUnit" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TApp" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type loc p)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type loc p))))) :+: ((C1 ('MetaCons "TUserDefined" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TypeOccurrence p loc))) :+: C1 ('MetaCons "TRecord" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (Locate loc LowerAlphaName, Type loc p))))) :+: (C1 ('MetaCons "TList" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type loc p))) :+: C1 ('MetaCons "TExtension" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TypeSyntaxExtension p loc))))))

Methods

from :: Type' loc p -> Rep (Type' loc p) x #

to :: Rep (Type' loc p) x -> Type' loc p #

CoreConstraint Show loc p => Show (Type' loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

showsPrec :: Int -> Type' loc p -> ShowS #

show :: Type' loc p -> String #

showList :: [Type' loc p] -> ShowS #

CoreConstraint Eq loc p => Eq (Type' loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

(==) :: Type' loc p -> Type' loc p -> Bool #

(/=) :: Type' loc p -> Type' loc p -> Bool #

CoreConstraint Ord loc p => Ord (Type' loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

compare :: Type' loc p -> Type' loc p -> Ordering #

(<) :: Type' loc p -> Type' loc p -> Bool #

(<=) :: Type' loc p -> Type' loc p -> Bool #

(>) :: Type' loc p -> Type' loc p -> Bool #

(>=) :: Type' loc p -> Type' loc p -> Bool #

max :: Type' loc p -> Type' loc p -> Type' loc p #

min :: Type' loc p -> Type' loc p -> Type' loc p #

PhaseCoerce (Type' SourceRegion Renamed) (Type' SourceRegion Shunted) Source # 
Instance details

Defined in Elara.Shunt

type Rep (Type' loc p) Source # 
Instance details

Defined in Elara.AST.Types

type Rep (Type' loc p) = D1 ('MetaData "Type'" "Elara.AST.Types" "elara-0.1.0-inplace" 'False) (((C1 ('MetaCons "TVar" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TypeVariable p loc))) :+: C1 ('MetaCons "TFun" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type loc p)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type loc p)))) :+: (C1 ('MetaCons "TUnit" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "TApp" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type loc p)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type loc p))))) :+: ((C1 ('MetaCons "TUserDefined" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TypeOccurrence p loc))) :+: C1 ('MetaCons "TRecord" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (Locate loc LowerAlphaName, Type loc p))))) :+: (C1 ('MetaCons "TList" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type loc p))) :+: C1 ('MetaCons "TExtension" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TypeSyntaxExtension p loc))))))

data BinaryOperator loc (p :: k) Source #

Binary operator (only exists in extension types for early phases)

Constructors

SymOp !loc (OperatorOccurrence p loc) 
InfixedOp !loc (InfixedOccurrence p loc) 

Instances

Instances details
(PrettyPhase p, PrettyPhaseLoc p loc) => Pretty (BinaryOperator loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Generic (BinaryOperator loc p) Source # 
Instance details

Defined in Elara.AST.Types

Methods

from :: BinaryOperator loc p -> Rep (BinaryOperator loc p) x #

to :: Rep (BinaryOperator loc p) x -> BinaryOperator loc p #

CoreConstraint Show loc p => Show (BinaryOperator loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

showsPrec :: Int -> BinaryOperator loc p -> ShowS #

show :: BinaryOperator loc p -> String #

showList :: [BinaryOperator loc p] -> ShowS #

CoreConstraint Eq loc p => Eq (BinaryOperator loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

(==) :: BinaryOperator loc p -> BinaryOperator loc p -> Bool #

(/=) :: BinaryOperator loc p -> BinaryOperator loc p -> Bool #

CoreConstraint Ord loc p => Ord (BinaryOperator loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

compare :: BinaryOperator loc p -> BinaryOperator loc p -> Ordering #

(<) :: BinaryOperator loc p -> BinaryOperator loc p -> Bool #

(<=) :: BinaryOperator loc p -> BinaryOperator loc p -> Bool #

(>) :: BinaryOperator loc p -> BinaryOperator loc p -> Bool #

(>=) :: BinaryOperator loc p -> BinaryOperator loc p -> Bool #

max :: BinaryOperator loc p -> BinaryOperator loc p -> BinaryOperator loc p #

min :: BinaryOperator loc p -> BinaryOperator loc p -> BinaryOperator loc p #

type Rep (BinaryOperator loc p) Source # 
Instance details

Defined in Elara.AST.Types

data TypeDeclaration loc (p :: k) Source #

Type declarations (ADT or alias)

Constructors

ADT (NonEmpty (ConstructorBinder p loc, [Type loc p])) 
Alias (Type loc p) 

Instances

Instances details
(PrettyPhase p, PrettyExtensions p, PrettyPhaseLoc p loc) => Pretty (TypeDeclaration loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Generic (TypeDeclaration loc p) Source # 
Instance details

Defined in Elara.AST.Types

Associated Types

type Rep (TypeDeclaration loc p) 
Instance details

Defined in Elara.AST.Types

type Rep (TypeDeclaration loc p) = D1 ('MetaData "TypeDeclaration" "Elara.AST.Types" "elara-0.1.0-inplace" 'False) (C1 ('MetaCons "ADT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (ConstructorBinder p loc, [Type loc p])))) :+: C1 ('MetaCons "Alias" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type loc p))))

Methods

from :: TypeDeclaration loc p -> Rep (TypeDeclaration loc p) x #

to :: Rep (TypeDeclaration loc p) x -> TypeDeclaration loc p #

CoreConstraint Show loc p => Show (TypeDeclaration loc p) Source # 
Instance details

Defined in Elara.AST.Instances

CoreConstraint Eq loc p => Eq (TypeDeclaration loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

(==) :: TypeDeclaration loc p -> TypeDeclaration loc p -> Bool #

(/=) :: TypeDeclaration loc p -> TypeDeclaration loc p -> Bool #

CoreConstraint Ord loc p => Ord (TypeDeclaration loc p) Source # 
Instance details

Defined in Elara.AST.Instances

PhaseCoerce (TypeDeclaration SourceRegion Renamed) (TypeDeclaration SourceRegion Shunted) Source # 
Instance details

Defined in Elara.Shunt

type Rep (TypeDeclaration loc p) Source # 
Instance details

Defined in Elara.AST.Types

type Rep (TypeDeclaration loc p) = D1 ('MetaData "TypeDeclaration" "Elara.AST.Types" "elara-0.1.0-inplace" 'False) (C1 ('MetaCons "ADT" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmpty (ConstructorBinder p loc, [Type loc p])))) :+: C1 ('MetaCons "Alias" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Type loc p))))

data Annotation loc (p :: k) Source #

Annotation on a declaration

Constructors

Annotation 

Instances

Instances details
Generic (Annotation loc p) Source # 
Instance details

Defined in Elara.AST.Types

Associated Types

type Rep (Annotation loc p) 
Instance details

Defined in Elara.AST.Types

type Rep (Annotation loc p) = D1 ('MetaData "Annotation" "Elara.AST.Types" "elara-0.1.0-inplace" 'False) (C1 ('MetaCons "Annotation" 'PrefixI 'True) (S1 ('MetaSel ('Just "annotationName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TypeOccurrence p loc)) :*: S1 ('MetaSel ('Just "annotationArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [AnnotationArg loc p])))

Methods

from :: Annotation loc p -> Rep (Annotation loc p) x #

to :: Rep (Annotation loc p) x -> Annotation loc p #

CoreConstraint Show loc p => Show (Annotation loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

showsPrec :: Int -> Annotation loc p -> ShowS #

show :: Annotation loc p -> String #

showList :: [Annotation loc p] -> ShowS #

CoreConstraint Eq loc p => Eq (Annotation loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

(==) :: Annotation loc p -> Annotation loc p -> Bool #

(/=) :: Annotation loc p -> Annotation loc p -> Bool #

CoreConstraint Ord loc p => Ord (Annotation loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

compare :: Annotation loc p -> Annotation loc p -> Ordering #

(<) :: Annotation loc p -> Annotation loc p -> Bool #

(<=) :: Annotation loc p -> Annotation loc p -> Bool #

(>) :: Annotation loc p -> Annotation loc p -> Bool #

(>=) :: Annotation loc p -> Annotation loc p -> Bool #

max :: Annotation loc p -> Annotation loc p -> Annotation loc p #

min :: Annotation loc p -> Annotation loc p -> Annotation loc p #

type Rep (Annotation loc p) Source # 
Instance details

Defined in Elara.AST.Types

type Rep (Annotation loc p) = D1 ('MetaData "Annotation" "Elara.AST.Types" "elara-0.1.0-inplace" 'False) (C1 ('MetaCons "Annotation" 'PrefixI 'True) (S1 ('MetaSel ('Just "annotationName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TypeOccurrence p loc)) :*: S1 ('MetaSel ('Just "annotationArgs") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [AnnotationArg loc p])))

newtype AnnotationArg loc (p :: k) Source #

Annotation argument (must be a constant expression)

Constructors

AnnotationArg (Expr loc p) 

Instances

Instances details
Generic (AnnotationArg loc p) Source # 
Instance details

Defined in Elara.AST.Types

Associated Types

type Rep (AnnotationArg loc p) 
Instance details

Defined in Elara.AST.Types

type Rep (AnnotationArg loc p) = D1 ('MetaData "AnnotationArg" "Elara.AST.Types" "elara-0.1.0-inplace" 'True) (C1 ('MetaCons "AnnotationArg" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p))))

Methods

from :: AnnotationArg loc p -> Rep (AnnotationArg loc p) x #

to :: Rep (AnnotationArg loc p) x -> AnnotationArg loc p #

CoreConstraint Show loc p => Show (AnnotationArg loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

showsPrec :: Int -> AnnotationArg loc p -> ShowS #

show :: AnnotationArg loc p -> String #

showList :: [AnnotationArg loc p] -> ShowS #

CoreConstraint Eq loc p => Eq (AnnotationArg loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

(==) :: AnnotationArg loc p -> AnnotationArg loc p -> Bool #

(/=) :: AnnotationArg loc p -> AnnotationArg loc p -> Bool #

CoreConstraint Ord loc p => Ord (AnnotationArg loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

compare :: AnnotationArg loc p -> AnnotationArg loc p -> Ordering #

(<) :: AnnotationArg loc p -> AnnotationArg loc p -> Bool #

(<=) :: AnnotationArg loc p -> AnnotationArg loc p -> Bool #

(>) :: AnnotationArg loc p -> AnnotationArg loc p -> Bool #

(>=) :: AnnotationArg loc p -> AnnotationArg loc p -> Bool #

max :: AnnotationArg loc p -> AnnotationArg loc p -> AnnotationArg loc p #

min :: AnnotationArg loc p -> AnnotationArg loc p -> AnnotationArg loc p #

type Rep (AnnotationArg loc p) Source # 
Instance details

Defined in Elara.AST.Types

type Rep (AnnotationArg loc p) = D1 ('MetaData "AnnotationArg" "Elara.AST.Types" "elara-0.1.0-inplace" 'True) (C1 ('MetaCons "AnnotationArg" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p))))

data Declaration loc (p :: k) Source #

Top-level declaration with location

Constructors

Declaration !loc (Declaration' loc p) 

Instances

Instances details
(PrettyPhase p, PrettyExtensions p, PrettyPhaseLoc p loc) => Pretty (Declaration loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

pretty :: Declaration loc p -> Doc AnsiStyle Source #

Generic (Declaration loc p) Source # 
Instance details

Defined in Elara.AST.Types

Associated Types

type Rep (Declaration loc p) 
Instance details

Defined in Elara.AST.Types

type Rep (Declaration loc p) = D1 ('MetaData "Declaration" "Elara.AST.Types" "elara-0.1.0-inplace" 'False) (C1 ('MetaCons "Declaration" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 loc) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Declaration' loc p))))

Methods

from :: Declaration loc p -> Rep (Declaration loc p) x #

to :: Rep (Declaration loc p) x -> Declaration loc p #

CoreConstraint Show loc p => Show (Declaration loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

showsPrec :: Int -> Declaration loc p -> ShowS #

show :: Declaration loc p -> String #

showList :: [Declaration loc p] -> ShowS #

CoreConstraint Eq loc p => Eq (Declaration loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

(==) :: Declaration loc p -> Declaration loc p -> Bool #

(/=) :: Declaration loc p -> Declaration loc p -> Bool #

CoreConstraint Ord loc p => Ord (Declaration loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

compare :: Declaration loc p -> Declaration loc p -> Ordering #

(<) :: Declaration loc p -> Declaration loc p -> Bool #

(<=) :: Declaration loc p -> Declaration loc p -> Bool #

(>) :: Declaration loc p -> Declaration loc p -> Bool #

(>=) :: Declaration loc p -> Declaration loc p -> Bool #

max :: Declaration loc p -> Declaration loc p -> Declaration loc p #

min :: Declaration loc p -> Declaration loc p -> Declaration loc p #

type Rep (Declaration loc p) Source # 
Instance details

Defined in Elara.AST.Types

type Rep (Declaration loc p) = D1 ('MetaData "Declaration" "Elara.AST.Types" "elara-0.1.0-inplace" 'False) (C1 ('MetaCons "Declaration" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 loc) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Declaration' loc p))))

data Declaration' loc (p :: k) Source #

Declaration content

Instances

Instances details
Generic (Declaration' loc p) Source # 
Instance details

Defined in Elara.AST.Types

Associated Types

type Rep (Declaration' loc p) 
Instance details

Defined in Elara.AST.Types

type Rep (Declaration' loc p) = D1 ('MetaData "Declaration'" "Elara.AST.Types" "elara-0.1.0-inplace" 'False) (C1 ('MetaCons "Declaration'" 'PrefixI 'True) (S1 ('MetaSel ('Just "declModuleName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Locate loc ModuleName)) :*: S1 ('MetaSel ('Just "declBody") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (DeclarationBody loc p))))

Methods

from :: Declaration' loc p -> Rep (Declaration' loc p) x #

to :: Rep (Declaration' loc p) x -> Declaration' loc p #

CoreConstraint Show loc p => Show (Declaration' loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

showsPrec :: Int -> Declaration' loc p -> ShowS #

show :: Declaration' loc p -> String #

showList :: [Declaration' loc p] -> ShowS #

CoreConstraint Eq loc p => Eq (Declaration' loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

(==) :: Declaration' loc p -> Declaration' loc p -> Bool #

(/=) :: Declaration' loc p -> Declaration' loc p -> Bool #

CoreConstraint Ord loc p => Ord (Declaration' loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

compare :: Declaration' loc p -> Declaration' loc p -> Ordering #

(<) :: Declaration' loc p -> Declaration' loc p -> Bool #

(<=) :: Declaration' loc p -> Declaration' loc p -> Bool #

(>) :: Declaration' loc p -> Declaration' loc p -> Bool #

(>=) :: Declaration' loc p -> Declaration' loc p -> Bool #

max :: Declaration' loc p -> Declaration' loc p -> Declaration' loc p #

min :: Declaration' loc p -> Declaration' loc p -> Declaration' loc p #

type Rep (Declaration' loc p) Source # 
Instance details

Defined in Elara.AST.Types

type Rep (Declaration' loc p) = D1 ('MetaData "Declaration'" "Elara.AST.Types" "elara-0.1.0-inplace" 'False) (C1 ('MetaCons "Declaration'" 'PrefixI 'True) (S1 ('MetaSel ('Just "declModuleName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Locate loc ModuleName)) :*: S1 ('MetaSel ('Just "declBody") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (DeclarationBody loc p))))

data DeclarationBody loc (p :: k) Source #

Declaration body with location

Constructors

DeclarationBody !loc (DeclarationBody' loc p) 

Instances

Instances details
Generic (DeclarationBody loc p) Source # 
Instance details

Defined in Elara.AST.Types

Associated Types

type Rep (DeclarationBody loc p) 
Instance details

Defined in Elara.AST.Types

type Rep (DeclarationBody loc p) = D1 ('MetaData "DeclarationBody" "Elara.AST.Types" "elara-0.1.0-inplace" 'False) (C1 ('MetaCons "DeclarationBody" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 loc) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (DeclarationBody' loc p))))

Methods

from :: DeclarationBody loc p -> Rep (DeclarationBody loc p) x #

to :: Rep (DeclarationBody loc p) x -> DeclarationBody loc p #

CoreConstraint Show loc p => Show (DeclarationBody loc p) Source # 
Instance details

Defined in Elara.AST.Instances

CoreConstraint Eq loc p => Eq (DeclarationBody loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

(==) :: DeclarationBody loc p -> DeclarationBody loc p -> Bool #

(/=) :: DeclarationBody loc p -> DeclarationBody loc p -> Bool #

CoreConstraint Ord loc p => Ord (DeclarationBody loc p) Source # 
Instance details

Defined in Elara.AST.Instances

type Rep (DeclarationBody loc p) Source # 
Instance details

Defined in Elara.AST.Types

type Rep (DeclarationBody loc p) = D1 ('MetaData "DeclarationBody" "Elara.AST.Types" "elara-0.1.0-inplace" 'False) (C1 ('MetaCons "DeclarationBody" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 loc) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (DeclarationBody' loc p))))

data TypedLambdaParam v loc (p :: k) Source #

Lambda binder with optional type annotation, used from Renamed onward

Constructors

TypedLambdaParam v (PatternMeta p loc) 

Instances

Instances details
Generic (TypedLambdaParam v loc p) Source # 
Instance details

Defined in Elara.AST.Types

Associated Types

type Rep (TypedLambdaParam v loc p) 
Instance details

Defined in Elara.AST.Types

type Rep (TypedLambdaParam v loc p) = D1 ('MetaData "TypedLambdaParam" "Elara.AST.Types" "elara-0.1.0-inplace" 'False) (C1 ('MetaCons "TypedLambdaParam" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 v) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (PatternMeta p loc))))

Methods

from :: TypedLambdaParam v loc p -> Rep (TypedLambdaParam v loc p) x #

to :: Rep (TypedLambdaParam v loc p) x -> TypedLambdaParam v loc p #

(Show v, Show (PatternMeta p loc)) => Show (TypedLambdaParam v loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

showsPrec :: Int -> TypedLambdaParam v loc p -> ShowS #

show :: TypedLambdaParam v loc p -> String #

showList :: [TypedLambdaParam v loc p] -> ShowS #

(Eq v, Eq (PatternMeta p loc)) => Eq (TypedLambdaParam v loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

(==) :: TypedLambdaParam v loc p -> TypedLambdaParam v loc p -> Bool #

(/=) :: TypedLambdaParam v loc p -> TypedLambdaParam v loc p -> Bool #

(Ord v, Ord (PatternMeta p loc)) => Ord (TypedLambdaParam v loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

compare :: TypedLambdaParam v loc p -> TypedLambdaParam v loc p -> Ordering #

(<) :: TypedLambdaParam v loc p -> TypedLambdaParam v loc p -> Bool #

(<=) :: TypedLambdaParam v loc p -> TypedLambdaParam v loc p -> Bool #

(>) :: TypedLambdaParam v loc p -> TypedLambdaParam v loc p -> Bool #

(>=) :: TypedLambdaParam v loc p -> TypedLambdaParam v loc p -> Bool #

max :: TypedLambdaParam v loc p -> TypedLambdaParam v loc p -> TypedLambdaParam v loc p #

min :: TypedLambdaParam v loc p -> TypedLambdaParam v loc p -> TypedLambdaParam v loc p #

type Rep (TypedLambdaParam v loc p) Source # 
Instance details

Defined in Elara.AST.Types

type Rep (TypedLambdaParam v loc p) = D1 ('MetaData "TypedLambdaParam" "Elara.AST.Types" "elara-0.1.0-inplace" 'False) (C1 ('MetaCons "TypedLambdaParam" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 v) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (PatternMeta p loc))))

data DeclarationBody' loc (p :: k) Source #

Declaration body syntax

Instances

Instances details
(PrettyPhase p, PrettyExtensions p, PrettyPhaseLoc p loc) => Pretty (DeclarationBody' loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Generic (DeclarationBody' loc p) Source # 
Instance details

Defined in Elara.AST.Types

Associated Types

type Rep (DeclarationBody' loc p) 
Instance details

Defined in Elara.AST.Types

type Rep (DeclarationBody' loc p) = D1 ('MetaData "DeclarationBody'" "Elara.AST.Types" "elara-0.1.0-inplace" 'False) (C1 ('MetaCons "ValueDeclaration" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TopValueBinder p loc)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ValueDeclPatterns p loc)))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ValueDeclTypeAnnotation p loc)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ValueDeclMetadata p loc)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Annotation loc p])))) :+: (C1 ('MetaCons "TypeDeclarationBody" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TopTypeBinder p loc)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TypeVariable p loc]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TypeDeclaration loc p)))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (Type loc p))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TypeDeclMetadata p loc)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Annotation loc p])))) :+: C1 ('MetaCons "DeclBodyExtension" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (DeclBodyExtension p loc)))))

Methods

from :: DeclarationBody' loc p -> Rep (DeclarationBody' loc p) x #

to :: Rep (DeclarationBody' loc p) x -> DeclarationBody' loc p #

CoreConstraint Show loc p => Show (DeclarationBody' loc p) Source # 
Instance details

Defined in Elara.AST.Instances

CoreConstraint Eq loc p => Eq (DeclarationBody' loc p) Source # 
Instance details

Defined in Elara.AST.Instances

Methods

(==) :: DeclarationBody' loc p -> DeclarationBody' loc p -> Bool #

(/=) :: DeclarationBody' loc p -> DeclarationBody' loc p -> Bool #

CoreConstraint Ord loc p => Ord (DeclarationBody' loc p) Source # 
Instance details

Defined in Elara.AST.Instances

type Rep (DeclarationBody' loc p) Source # 
Instance details

Defined in Elara.AST.Types

type Rep (DeclarationBody' loc p) = D1 ('MetaData "DeclarationBody'" "Elara.AST.Types" "elara-0.1.0-inplace" 'False) (C1 ('MetaCons "ValueDeclaration" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TopValueBinder p loc)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Expr loc p)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ValueDeclPatterns p loc)))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ValueDeclTypeAnnotation p loc)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (ValueDeclMetadata p loc)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Annotation loc p])))) :+: (C1 ('MetaCons "TypeDeclarationBody" 'PrefixI 'False) ((S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TopTypeBinder p loc)) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [TypeVariable p loc]) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TypeDeclaration loc p)))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (Type loc p))) :*: (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (TypeDeclMetadata p loc)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 [Annotation loc p])))) :+: C1 ('MetaCons "DeclBodyExtension" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (DeclBodyExtension p loc)))))