hypertypes-0.2.2: Typed ASTs
Safe HaskellSafe-Inferred
LanguageHaskell2010

Hyper.Syntax.TypedLam

Documentation

data TypedLam var typ expr h Source #

Constructors

TypedLam 

Fields

Instances

Instances details
(Infer m t, Infer m e, HasInferredType e, UnifyGen m (TypeOf e), HSubset' (TypeOf e) (FuncType (TypeOf e)), HNodeLens (InferOf t) (TypeOf e), LocalScopeType v (UVarOf m # TypeOf e) m) => Infer m (TypedLam v t e) Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

Methods

inferBody :: forall (h :: AHyperType -> Type). (TypedLam v t e # InferChild m h) -> m (TypedLam v t e # h, InferOf (TypedLam v t e) # UVarOf m) Source #

inferContext :: proxy0 m -> proxy1 (TypedLam v t e) -> Dict (HNodesConstraint (TypedLam v t e) (Infer m), HNodesConstraint (InferOf (TypedLam v t e)) (UnifyGen m)) Source #

(c (TypedLam v t e), Recursively c t, Recursively c e) => Recursively c (TypedLam v t e) Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

Methods

recursively :: proxy (c (TypedLam v t e)) -> Dict (c (TypedLam v t e), HNodesConstraint (TypedLam v t e) (Recursively c)) Source #

Semigroup var => HApply (TypedLam var typ expr) Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

Methods

hzip :: forall (p :: HyperType) (q :: HyperType). (TypedLam var typ expr # p) -> (TypedLam var typ expr # q) -> TypedLam var typ expr # (p :*: q) Source #

HContext (TypedLam var typ expr) Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

Methods

hcontext :: forall (p :: HyperType). (TypedLam var typ expr # p) -> TypedLam var typ expr # (HFunc p (Const (TypedLam var typ expr # p)) :*: p) Source #

HFoldable (TypedLam var typ expr) Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

Methods

hfoldMap :: Monoid a => (forall (n :: HyperType). HWitness (TypedLam var typ expr) n -> (p # n) -> a) -> (TypedLam var typ expr # p) -> a Source #

HFunctor (TypedLam var typ expr) Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

Methods

hmap :: (forall (n :: HyperType). HWitness (TypedLam var typ expr) n -> (p # n) -> q # n) -> (TypedLam var typ expr # p) -> TypedLam var typ expr # q Source #

HNodes (TypedLam var typ expr) Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

Associated Types

type HNodesConstraint (TypedLam var typ expr) c Source #

type HWitnessType (TypedLam var typ expr) :: HyperType -> Type Source #

Methods

hLiftConstraint :: forall c (n :: HyperType) r. HNodesConstraint (TypedLam var typ expr) c => HWitness (TypedLam var typ expr) n -> Proxy c -> (c n => r) -> r Source #

Monoid var => HPointed (TypedLam var typ expr) Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

Methods

hpure :: (forall (n :: HyperType). HWitness (TypedLam var typ expr) n -> p # n) -> TypedLam var typ expr # p Source #

(RNodes t, RNodes e) => RNodes (TypedLam v t e) Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

(RTraversable t, RTraversable e) => RTraversable (TypedLam v t e) Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

HTraversable (TypedLam var typ expr) Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

Methods

hsequence :: forall f (p :: AHyperType -> Type). Applicative f => (TypedLam var typ expr # ContainedH f p) -> f (TypedLam var typ expr # p) Source #

Eq var => ZipMatch (TypedLam var typ expr) Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

Methods

zipMatch :: forall (p :: HyperType) (q :: HyperType). (TypedLam var typ expr # p) -> (TypedLam var typ expr # q) -> Maybe (TypedLam var typ expr # (p :*: q)) Source #

HMorph (TypedLam var typ0 expr0) (TypedLam var typ1 expr1) Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

Associated Types

type MorphConstraint (TypedLam var typ0 expr0) (TypedLam var typ1 expr1) c Source #

data MorphWitness (TypedLam var typ0 expr0) (TypedLam var typ1 expr1) :: HyperType -> HyperType -> Type Source #

Methods

morphMap :: (forall (a :: HyperType) (b :: HyperType). MorphWitness (TypedLam var typ0 expr0) (TypedLam var typ1 expr1) a b -> (p # a) -> q # b) -> (TypedLam var typ0 expr0 # p) -> TypedLam var typ1 expr1 # q Source #

morphLiftConstraint :: forall c (a :: HyperType) (b :: HyperType) r. MorphConstraint (TypedLam var typ0 expr0) (TypedLam var typ1 expr1) c => MorphWitness (TypedLam var typ0 expr0) (TypedLam var typ1 expr1) a b -> Proxy c -> (c a b => r) -> r Source #

Generic (TypedLam var typ expr h) Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

Associated Types

type Rep (TypedLam var typ expr h) :: Type -> Type #

Methods

from :: TypedLam var typ expr h -> Rep (TypedLam var typ expr h) x #

to :: Rep (TypedLam var typ expr h) x -> TypedLam var typ expr h #

Constraints (TypedLam var typ expr h) Show => Show (TypedLam var typ expr h) Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

Methods

showsPrec :: Int -> TypedLam var typ expr h -> ShowS #

show :: TypedLam var typ expr h -> String #

showList :: [TypedLam var typ expr h] -> ShowS #

Constraints (TypedLam var typ expr h) Binary => Binary (TypedLam var typ expr h) Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

Methods

put :: TypedLam var typ expr h -> Put #

get :: Get (TypedLam var typ expr h) #

putList :: [TypedLam var typ expr h] -> Put #

Constraints (TypedLam var typ expr h) NFData => NFData (TypedLam var typ expr h) Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

Methods

rnf :: TypedLam var typ expr h -> () #

Constraints (TypedLam var typ expr h) Eq => Eq (TypedLam var typ expr h) Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

Methods

(==) :: TypedLam var typ expr h -> TypedLam var typ expr h -> Bool #

(/=) :: TypedLam var typ expr h -> TypedLam var typ expr h -> Bool #

Constraints (TypedLam var typ expr h) Ord => Ord (TypedLam var typ expr h) Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

Methods

compare :: TypedLam var typ expr h -> TypedLam var typ expr h -> Ordering #

(<) :: TypedLam var typ expr h -> TypedLam var typ expr h -> Bool #

(<=) :: TypedLam var typ expr h -> TypedLam var typ expr h -> Bool #

(>) :: TypedLam var typ expr h -> TypedLam var typ expr h -> Bool #

(>=) :: TypedLam var typ expr h -> TypedLam var typ expr h -> Bool #

max :: TypedLam var typ expr h -> TypedLam var typ expr h -> TypedLam var typ expr h #

min :: TypedLam var typ expr h -> TypedLam var typ expr h -> TypedLam var typ expr h #

Constraints (TypedLam var typ expr h) Pretty => Pretty (TypedLam var typ expr h) Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

Methods

pPrintPrec :: PrettyLevel -> Rational -> TypedLam var typ expr h -> Doc #

pPrint :: TypedLam var typ expr h -> Doc #

pPrintList :: PrettyLevel -> [TypedLam var typ expr h] -> Doc #

type InferOf (TypedLam _1 _2 e) Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

type InferOf (TypedLam _1 _2 e) = ANode (TypeOf e)
type HWitnessType (TypedLam var typ expr) Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

type HWitnessType (TypedLam var typ expr) = W_TypedLam var typ expr
type HNodesConstraint (TypedLam var typ expr) constraint Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

type HNodesConstraint (TypedLam var typ expr) constraint = (constraint typ, constraint expr)
data MorphWitness (TypedLam var typ0 expr0) (TypedLam var typ1 expr1) _ _1 Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

data MorphWitness (TypedLam var typ0 expr0) (TypedLam var typ1 expr1) _ _1 where
type MorphConstraint (TypedLam var typ0 expr0) (TypedLam var typ1 expr1) constraint Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

type MorphConstraint (TypedLam var typ0 expr0) (TypedLam var typ1 expr1) constraint = (constraint expr0 expr1, constraint typ0 typ1)
type Rep (TypedLam var typ expr h) Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

type Rep (TypedLam var typ expr h) = D1 ('MetaData "TypedLam" "Hyper.Syntax.TypedLam" "hypertypes-0.2.2-9g9pX7Hb2mGI4yyssTDpOd" 'False) (C1 ('MetaCons "TypedLam" 'PrefixI 'True) (S1 ('MetaSel ('Just "_tlIn") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 var) :*: (S1 ('MetaSel ('Just "_tlInType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (h :# typ)) :*: S1 ('MetaSel ('Just "_tlOut") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (h :# expr)))))

tlIn :: forall var typ expr h var. Lens (TypedLam var typ expr h) (TypedLam var typ expr h) var var Source #

tlInType :: forall var typ expr h typ. Lens (TypedLam var typ expr h) (TypedLam var typ expr h) ((:#) h typ) ((:#) h typ) Source #

tlOut :: forall var typ expr h expr. Lens (TypedLam var typ expr h) (TypedLam var typ expr h) ((:#) h expr) ((:#) h expr) Source #

data W_TypedLam (var :: Type) (typ :: HyperType) (expr :: HyperType) node where Source #

Constructors

W_TypedLam_typ :: W_TypedLam var typ expr typ 
W_TypedLam_expr :: W_TypedLam var typ expr expr 

data family MorphWitness s t :: HyperType -> HyperType -> Type Source #

Instances

Instances details
data MorphWitness (ANode a) (ANode b) _ _1 Source # 
Instance details

Defined in Hyper.Combinator.ANode

data MorphWitness (ANode a) (ANode b) _ _1 where
data MorphWitness (App expr0) (App expr1) _ _1 Source # 
Instance details

Defined in Hyper.Syntax.App

data MorphWitness (App expr0) (App expr1) _ _1 where
data MorphWitness (FuncType typ0) (FuncType typ1) _ _1 Source # 
Instance details

Defined in Hyper.Syntax.FuncType

data MorphWitness (FuncType typ0) (FuncType typ1) _ _1 where
data MorphWitness (Lam v expr0) (Lam v expr1) _ _1 Source # 
Instance details

Defined in Hyper.Syntax.Lam

data MorphWitness (Lam v expr0) (Lam v expr1) _ _1 where
data MorphWitness (Let v expr0) (Let v expr1) _ _1 Source # 
Instance details

Defined in Hyper.Syntax.Let

data MorphWitness (Let v expr0) (Let v expr1) _ _1 where
data MorphWitness (TermMap h expr0) (TermMap h expr1) _ _1 Source # 
Instance details

Defined in Hyper.Syntax.Map

data MorphWitness (TermMap h expr0) (TermMap h expr1) _ _1 where
data MorphWitness (ToNom nomId term0) (ToNom nomId term1) _ _1 Source # 
Instance details

Defined in Hyper.Syntax.Nominal

data MorphWitness (ToNom nomId term0) (ToNom nomId term1) _ _1 where
data MorphWitness (Var v expr0) (Var v expr1) _ _1 Source # 
Instance details

Defined in Hyper.Syntax.Var

data MorphWitness (Var v expr0) (Var v expr1) _ _1
data MorphWitness (RowExtend key val0 rest0) (RowExtend key val1 rest1) _ _1 Source # 
Instance details

Defined in Hyper.Syntax.Row

data MorphWitness (RowExtend key val0 rest0) (RowExtend key val1 rest1) _ _1 where
data MorphWitness (TypedLam var typ0 expr0) (TypedLam var typ1 expr1) _ _1 Source # 
Instance details

Defined in Hyper.Syntax.TypedLam

data MorphWitness (TypedLam var typ0 expr0) (TypedLam var typ1 expr1) _ _1 where