hypertypes-0.1.0.2: Typed ASTs
Safe HaskellNone
LanguageHaskell2010

Hyper.Type.AST.Let

Synopsis

Documentation

data Let v expr h Source #

A term for let-expressions with let-generalization.

Let v exprs express let-expressions with vs as variable names and exprs for terms.

Apart from the data type, an Infer instance is also provided.

Constructors

Let 

Fields

Instances

Instances details
(MonadScopeLevel m, LocalScopeType v (GTerm (UVarOf m) # TypeOf expr) m, UnifyGen m (TypeOf expr), HasInferredType expr, HNodesConstraint (InferOf expr) (UnifyGen m), HTraversable (InferOf expr), Infer m expr) => Infer m (Let v expr) Source # 
Instance details

Defined in Hyper.Type.AST.Let

Methods

inferBody :: forall (h :: AHyperType -> Type). (Let v expr # InferChild m h) -> m (Let v expr # h, InferOf (Let v expr) # UVarOf m) Source #

inferContext :: proxy0 m -> proxy1 (Let v expr) -> Dict (HNodesConstraint (Let v expr) (Infer m), HNodesConstraint (InferOf (Let v expr)) (UnifyGen m)) Source #

HNodes (Let v expr) Source # 
Instance details

Defined in Hyper.Type.AST.Let

Associated Types

type HNodesConstraint (Let v expr) c Source #

type HWitnessType (Let v expr) :: HyperType -> Type Source #

Methods

hLiftConstraint :: forall c (n :: HyperType) r. HNodesConstraint (Let v expr) c => HWitness (Let v expr) n -> Proxy c -> (c n => r) -> r Source #

Monoid v => HPointed (Let v expr) Source # 
Instance details

Defined in Hyper.Type.AST.Let

Methods

hpure :: (forall (n :: HyperType). HWitness (Let v expr) n -> p # n) -> Let v expr # p Source #

HFunctor (Let v expr) Source # 
Instance details

Defined in Hyper.Type.AST.Let

Methods

hmap :: (forall (n :: HyperType). HWitness (Let v expr) n -> (p # n) -> q # n) -> (Let v expr # p) -> Let v expr # q Source #

HFoldable (Let v expr) Source # 
Instance details

Defined in Hyper.Type.AST.Let

Methods

hfoldMap :: Monoid a => (forall (n :: HyperType). HWitness (Let v expr) n -> (p # n) -> a) -> (Let v expr # p) -> a Source #

HTraversable (Let v expr) Source # 
Instance details

Defined in Hyper.Type.AST.Let

Methods

hsequence :: forall f (p :: AHyperType -> Type). Applicative f => (Let v expr # ContainedH f p) -> f (Let v expr # p) Source #

Semigroup v => HApply (Let v expr) Source # 
Instance details

Defined in Hyper.Type.AST.Let

Methods

hzip :: forall (p :: HyperType) (q :: HyperType). (Let v expr # p) -> (Let v expr # q) -> Let v expr # (p :*: q) Source #

Eq v => ZipMatch (Let v expr) Source # 
Instance details

Defined in Hyper.Type.AST.Let

Methods

zipMatch :: forall (p :: HyperType) (q :: HyperType). (Let v expr # p) -> (Let v expr # q) -> Maybe (Let v expr # (p :*: q)) Source #

HContext (Let v expr) Source # 
Instance details

Defined in Hyper.Type.AST.Let

Methods

hcontext :: forall (p :: HyperType). (Let v expr # p) -> Let v expr # (HFunc p (Const (Let v expr # p)) :*: p) Source #

HMorph (Let v expr0) (Let v expr1) Source # 
Instance details

Defined in Hyper.Type.AST.Let

Associated Types

type MorphConstraint (Let v expr0) (Let v expr1) c Source #

data MorphWitness (Let v expr0) (Let v expr1) :: HyperType -> HyperType -> Type Source #

Methods

morphMap :: (forall (a :: HyperType) (b :: HyperType). MorphWitness (Let v expr0) (Let v expr1) a b -> (p # a) -> q # b) -> (Let v expr0 # p) -> Let v expr1 # q Source #

morphLiftConstraint :: forall c (a :: HyperType) (b :: HyperType) r. MorphConstraint (Let v expr0) (Let v expr1) c => MorphWitness (Let v expr0) (Let v expr1) a b -> Proxy c -> (c a b => r) -> r Source #

Constraints (Let v expr h) Eq => Eq (Let v expr h) Source # 
Instance details

Defined in Hyper.Type.AST.Let

Methods

(==) :: Let v expr h -> Let v expr h -> Bool #

(/=) :: Let v expr h -> Let v expr h -> Bool #

Constraints (Let v expr h) Ord => Ord (Let v expr h) Source # 
Instance details

Defined in Hyper.Type.AST.Let

Methods

compare :: Let v expr h -> Let v expr h -> Ordering #

(<) :: Let v expr h -> Let v expr h -> Bool #

(<=) :: Let v expr h -> Let v expr h -> Bool #

(>) :: Let v expr h -> Let v expr h -> Bool #

(>=) :: Let v expr h -> Let v expr h -> Bool #

max :: Let v expr h -> Let v expr h -> Let v expr h #

min :: Let v expr h -> Let v expr h -> Let v expr h #

Constraints (Let v expr h) Show => Show (Let v expr h) Source # 
Instance details

Defined in Hyper.Type.AST.Let

Methods

showsPrec :: Int -> Let v expr h -> ShowS #

show :: Let v expr h -> String #

showList :: [Let v expr h] -> ShowS #

Generic (Let v expr h) Source # 
Instance details

Defined in Hyper.Type.AST.Let

Associated Types

type Rep (Let v expr h) :: Type -> Type #

Methods

from :: Let v expr h -> Rep (Let v expr h) x #

to :: Rep (Let v expr h) x -> Let v expr h #

Constraints (Let v expr h) Binary => Binary (Let v expr h) Source # 
Instance details

Defined in Hyper.Type.AST.Let

Methods

put :: Let v expr h -> Put #

get :: Get (Let v expr h) #

putList :: [Let v expr h] -> Put #

Constraints (Let v expr h) NFData => NFData (Let v expr h) Source # 
Instance details

Defined in Hyper.Type.AST.Let

Methods

rnf :: Let v expr h -> () #

Constraints (Let v expr h) Pretty => Pretty (Let v expr h) Source # 
Instance details

Defined in Hyper.Type.AST.Let

Methods

pPrintPrec :: PrettyLevel -> Rational -> Let v expr h -> Doc #

pPrint :: Let v expr h -> Doc #

pPrintList :: PrettyLevel -> [Let v expr h] -> Doc #

type HWitnessType (Let v expr) Source # 
Instance details

Defined in Hyper.Type.AST.Let

type HWitnessType (Let v expr) = W_Let v expr
type InferOf (Let _1 e) Source # 
Instance details

Defined in Hyper.Type.AST.Let

type InferOf (Let _1 e) = InferOf e
type HNodesConstraint (Let v expr) constraint Source # 
Instance details

Defined in Hyper.Type.AST.Let

type HNodesConstraint (Let v expr) constraint = constraint expr
data MorphWitness (Let v expr0) (Let v expr1) _ _ Source # 
Instance details

Defined in Hyper.Type.AST.Let

data MorphWitness (Let v expr0) (Let v expr1) _ _ where
type MorphConstraint (Let v expr0) (Let v expr1) constraint Source # 
Instance details

Defined in Hyper.Type.AST.Let

type MorphConstraint (Let v expr0) (Let v expr1) constraint = constraint expr0 expr1
type Rep (Let v expr h) Source # 
Instance details

Defined in Hyper.Type.AST.Let

type Rep (Let v expr h) = D1 ('MetaData "Let" "Hyper.Type.AST.Let" "hypertypes-0.1.0.2-GDiSRF0EwgQ6Mkx3yytlTL" 'False) (C1 ('MetaCons "Let" 'PrefixI 'True) (S1 ('MetaSel ('Just "_letVar") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 v) :*: (S1 ('MetaSel ('Just "_letEquals") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (h :# expr)) :*: S1 ('MetaSel ('Just "_letIn") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (h :# expr)))))

letVar :: forall v expr h v. Lens (Let v expr h) (Let v expr h) v v Source #

letEquals :: forall v expr h. Lens' (Let v expr h) ((:#) h expr) Source #

letIn :: forall v expr h. Lens' (Let v expr h) ((:#) h expr) Source #

data W_Let (v :: Type) (expr :: HyperType) node where Source #

Constructors

W_Let_expr :: W_Let v expr expr 

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

Instances

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

Defined in Hyper.Combinator.ANode

data MorphWitness (ANode a) (ANode b) _ _ where
data MorphWitness (FuncType typ0) (FuncType typ1) _ _ Source # 
Instance details

Defined in Hyper.Type.AST.FuncType

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

Defined in Hyper.Type.AST.App

data MorphWitness (App expr0) (App expr1) _ _ where
data MorphWitness (TermMap h expr0) (TermMap h expr1) _ _ Source # 
Instance details

Defined in Hyper.Type.AST.Map

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

Defined in Hyper.Type.AST.Var

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

Defined in Hyper.Type.AST.Nominal

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

Defined in Hyper.Type.AST.Let

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

Defined in Hyper.Type.AST.Lam

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

Defined in Hyper.Type.AST.Row

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

Defined in Hyper.Type.AST.TypedLam

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