hypertypes-0.2.2: Typed ASTs
Safe HaskellSafe-Inferred
LanguageHaskell2010

Hyper.Syntax.Var

Description

Variables.

Synopsis

Documentation

newtype Var v (expr :: HyperType) (h :: AHyperType) Source #

Parameterized by term AST and not by its type AST (which currently is its only part used), for future evaluation/complilation support.

Constructors

Var v 

Instances

Instances details
(UnifyGen m (TypeOf expr), HasScope m (ScopeOf expr), VarType v expr, Monad m) => Infer m (Var v expr) Source # 
Instance details

Defined in Hyper.Syntax.Var

Methods

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

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

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

Defined in Hyper.Syntax.Var

Methods

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

HContext (Var v expr) Source # 
Instance details

Defined in Hyper.Syntax.Var

Methods

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

HFoldable (Var v expr) Source # 
Instance details

Defined in Hyper.Syntax.Var

Methods

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

HFunctor (Var v expr) Source # 
Instance details

Defined in Hyper.Syntax.Var

Methods

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

HasInferredType (Var v t) Source # 
Instance details

Defined in Hyper.Syntax.Var

Associated Types

type TypeOf (Var v t) :: HyperType Source #

Methods

inferredType :: Proxy (Var v t) -> ALens' (InferOf (Var v t) # v0) (v0 # TypeOf (Var v t)) Source #

HNodes (Var v expr) Source # 
Instance details

Defined in Hyper.Syntax.Var

Associated Types

type HNodesConstraint (Var v expr) c Source #

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

Methods

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

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

Defined in Hyper.Syntax.Var

Methods

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

HTraversable (Var v expr) Source # 
Instance details

Defined in Hyper.Syntax.Var

Methods

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

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

Defined in Hyper.Syntax.Var

Methods

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

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

Defined in Hyper.Syntax.Var

Associated Types

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

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

Methods

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

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

Generic (Var v expr h) Source # 
Instance details

Defined in Hyper.Syntax.Var

Associated Types

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

Methods

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

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

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

Defined in Hyper.Syntax.Var

Methods

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

show :: Var v expr h -> String #

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

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

Defined in Hyper.Syntax.Var

Methods

put :: Var v expr h -> Put #

get :: Get (Var v expr h) #

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

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

Defined in Hyper.Syntax.Var

Methods

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

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

Defined in Hyper.Syntax.Var

Methods

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

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

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

Defined in Hyper.Syntax.Var

Methods

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

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

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

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

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

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

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

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

Defined in Hyper.Syntax.Var

Methods

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

pPrint :: Var v expr h -> Doc #

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

type InferOf (Var _1 t) Source # 
Instance details

Defined in Hyper.Syntax.Var

type InferOf (Var _1 t) = ANode (TypeOf t)
type TypeOf (Var v t) Source # 
Instance details

Defined in Hyper.Syntax.Var

type TypeOf (Var v t) = TypeOf t
type HWitnessType (Var v expr) Source # 
Instance details

Defined in Hyper.Syntax.Var

type HWitnessType (Var v expr) = V1 :: HyperType -> Type
type HNodesConstraint (Var v expr) constraint Source # 
Instance details

Defined in Hyper.Syntax.Var

type HNodesConstraint (Var v expr) constraint = ()
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
type MorphConstraint (Var v expr0) (Var v expr1) constraint Source # 
Instance details

Defined in Hyper.Syntax.Var

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

Defined in Hyper.Syntax.Var

type Rep (Var v expr h) = D1 ('MetaData "Var" "Hyper.Syntax.Var" "hypertypes-0.2.2-9g9pX7Hb2mGI4yyssTDpOd" 'True) (C1 ('MetaCons "Var" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 v)))

_Var :: forall v expr h v expr h. Iso (Var v expr h) (Var v expr h) v v Source #

class VarType var expr where Source #

Methods

varType :: UnifyGen m (TypeOf expr) => Proxy expr -> var -> (ScopeOf expr # UVarOf m) -> m (UVarOf m # TypeOf expr) Source #

Instantiate a type for a variable in a given scope

type family ScopeOf (t :: HyperType) :: HyperType Source #

class HasScope m s where Source #

Methods

getScope :: m (s # UVarOf m) Source #