syntax-tree-0.1.0.1: Typed ASTs

Safe HaskellNone
LanguageHaskell2010

AST.Class.Recursive

Description

Classes applying on Knots recursively

Synopsis

Documentation

class Recursive c where Source #

A class of constraint constructors that apply to all recursive child nodes

Methods

recurse :: (KNodes k, c k) => Proxy (c k) -> Dict (KNodesConstraint k c) Source #

Lift a recursive constraint to the next layer

Instances
Recursive RTraversable Source # 
Instance details

Defined in AST.Class.Recursive

Recursive RNodes Source # 
Instance details

Defined in AST.Class.Recursive

Recursive RTraversableInferOf Source # 
Instance details

Defined in AST.Class.Infer.InferOf

Recursive (Recursively c) Source # 
Instance details

Defined in AST.Class.Recursive

Recursive (Unify m) Source # 
Instance details

Defined in AST.Class.Unify

Methods

recurse :: (KNodes k, Unify m k) => Proxy (Unify m k) -> Dict (KNodesConstraint k (Unify m)) Source #

Recursive (Infer m) Source # 
Instance details

Defined in AST.Class.Infer

Methods

recurse :: (KNodes k, Infer m k) => Proxy (Infer m k) -> Dict (KNodesConstraint k (Infer m)) Source #

Recursive (ITermVarsConstraint c) Source # 
Instance details

Defined in AST.Infer.Term

Recursive (Blame m) Source # 
Instance details

Defined in AST.Infer.Blame

Methods

recurse :: (KNodes k, Blame m k) => Proxy (Blame m k) -> Dict (KNodesConstraint k (Blame m)) Source #

Recursive (HasScheme varTypes m) Source # 
Instance details

Defined in AST.Term.Scheme

Methods

recurse :: (KNodes k, HasScheme varTypes m k) => Proxy (HasScheme varTypes m k) -> Dict (KNodesConstraint k (HasScheme varTypes m)) Source #

class RNodes k => Recursively c k where Source #

A constraint lifted to apply recursively.

Note that in cases where a constraint has dependencies other than RNodes, one will want to create a class such as RTraversable to capture the dependencies, otherwise using it in class contexts will be quite unergonomic.

Minimal complete definition

Nothing

Instances
c Pure => Recursively c Pure Source # 
Instance details

Defined in AST.Class.Recursive

c Prune => Recursively c Prune Source # 
Instance details

Defined in AST.Knot.Prune

c (F f) => Recursively c (F f) Source # 
Instance details

Defined in AST.Knot.Functor

Methods

recursively :: Proxy (c (F f)) -> Dict (c (F f), KNodesConstraint (F f) (Recursively c)) Source #

c (Ann a) => Recursively c (Ann a) Source # 
Instance details

Defined in AST.Knot.Ann

Methods

recursively :: Proxy (c (Ann a)) -> Dict (c (Ann a), KNodesConstraint (Ann a) (Recursively c)) Source #

c (Const a :: Knot -> Type) => Recursively c (Const a :: Knot -> Type) Source # 
Instance details

Defined in AST.Class.Recursive

Methods

recursively :: Proxy (c (Const a)) -> Dict (c (Const a), KNodesConstraint (Const a) (Recursively c)) Source #

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

Defined in AST.Term.Scheme

Methods

recursively :: Proxy (c (Scheme v t)) -> Dict (c (Scheme v t), KNodesConstraint (Scheme v t) (Recursively c)) Source #

Recursive (Recursively c) Source # 
Instance details

Defined in AST.Class.Recursive

class KNodes k => RNodes k Source #

A class of Knots which recursively implement KNodes

Instances
RNodes Pure Source # 
Instance details

Defined in AST.Class.Recursive

RNodes Prune Source # 
Instance details

Defined in AST.Knot.Prune

Recursive RNodes Source # 
Instance details

Defined in AST.Class.Recursive

RNodes (F f) Source # 
Instance details

Defined in AST.Knot.Functor

RNodes (Ann a) Source # 
Instance details

Defined in AST.Knot.Ann

RNodes (Const a :: Knot -> Type) Source # 
Instance details

Defined in AST.Class.Recursive

RNodes t => RNodes (Scheme v t) Source # 
Instance details

Defined in AST.Term.Scheme