hypertypes-0.2.2: Typed ASTs
Safe HaskellSafe-Inferred
LanguageHaskell2010

Hyper.Combinator.Flip

Description

A combinator to flip the order of the last two type parameters of a HyperType.

Synopsis

Documentation

newtype HFlip f x h Source #

Flip the order of the last two type parameters of a HyperType.

Useful to use instances of classes such as HTraversable which are available on the flipped HyperType. For example GTerm has instances when flipped.

Constructors

MkHFlip (f (GetHyperType h) # x) 

Instances

Instances details
(Recursively HContext h, Recursively HFunctor h) => HContext (HFlip Ann h) Source # 
Instance details

Defined in Hyper.Class.Context

Methods

hcontext :: forall (p :: HyperType). (HFlip Ann h # p) -> HFlip Ann h # (HFunc p (Const (HFlip Ann h # p)) :*: p) Source #

Recursively HFoldable h => HFoldable (HFlip Ann h) Source # 
Instance details

Defined in Hyper.Combinator.Ann

Methods

hfoldMap :: Monoid a => (forall (n :: HyperType). HWitness (HFlip Ann h) n -> (p # n) -> a) -> (HFlip Ann h # p) -> a Source #

HFoldable (InferOf e) => HFoldable (HFlip InferResult e) Source # 
Instance details

Defined in Hyper.Infer.Result

Methods

hfoldMap :: Monoid a => (forall (n :: HyperType). HWitness (HFlip InferResult e) n -> (p # n) -> a) -> (HFlip InferResult e # p) -> a Source #

Recursively HFoldable ast => HFoldable (HFlip GTerm ast) Source # 
Instance details

Defined in Hyper.Unify.Generalize

Methods

hfoldMap :: Monoid a => (forall (n :: HyperType). HWitness (HFlip GTerm ast) n -> (p # n) -> a) -> (HFlip GTerm ast # p) -> a Source #

Recursively HFunctor h => HFunctor (HFlip Ann h) Source # 
Instance details

Defined in Hyper.Combinator.Ann

Methods

hmap :: (forall (n :: HyperType). HWitness (HFlip Ann h) n -> (p # n) -> q # n) -> (HFlip Ann h # p) -> HFlip Ann h # q Source #

HFunctor (InferOf e) => HFunctor (HFlip InferResult e) Source # 
Instance details

Defined in Hyper.Infer.Result

Methods

hmap :: (forall (n :: HyperType). HWitness (HFlip InferResult e) n -> (p # n) -> q # n) -> (HFlip InferResult e # p) -> HFlip InferResult e # q Source #

Recursively HFunctor ast => HFunctor (HFlip GTerm ast) Source # 
Instance details

Defined in Hyper.Unify.Generalize

Methods

hmap :: (forall (n :: HyperType). HWitness (HFlip GTerm ast) n -> (p # n) -> q # n) -> (HFlip GTerm ast # p) -> HFlip GTerm ast # q Source #

RNodes h => HNodes (HFlip Ann h) Source # 
Instance details

Defined in Hyper.Combinator.Ann

Associated Types

type HNodesConstraint (HFlip Ann h) c Source #

type HWitnessType (HFlip Ann h) :: HyperType -> Type Source #

Methods

hLiftConstraint :: forall c (n :: HyperType) r. HNodesConstraint (HFlip Ann h) c => HWitness (HFlip Ann h) n -> Proxy c -> (c n => r) -> r Source #

HNodes (InferOf e) => HNodes (HFlip InferResult e) Source # 
Instance details

Defined in Hyper.Infer.Result

Methods

hLiftConstraint :: forall c (n :: HyperType) r. HNodesConstraint (HFlip InferResult e) c => HWitness (HFlip InferResult e) n -> Proxy c -> (c n => r) -> r Source #

RNodes a => HNodes (HFlip GTerm a) Source # 
Instance details

Defined in Hyper.Unify.Generalize

Associated Types

type HNodesConstraint (HFlip GTerm a) c Source #

type HWitnessType (HFlip GTerm a) :: HyperType -> Type Source #

Methods

hLiftConstraint :: forall c (n :: HyperType) r. HNodesConstraint (HFlip GTerm a) c => HWitness (HFlip GTerm a) n -> Proxy c -> (c n => r) -> r Source #

RTraversable h => HTraversable (HFlip Ann h) Source # 
Instance details

Defined in Hyper.Combinator.Ann

Methods

hsequence :: forall f (p :: AHyperType -> Type). Applicative f => (HFlip Ann h # ContainedH f p) -> f (HFlip Ann h # p) Source #

HTraversable (InferOf e) => HTraversable (HFlip InferResult e) Source # 
Instance details

Defined in Hyper.Infer.Result

Methods

hsequence :: forall f (p :: AHyperType -> Type). Applicative f => (HFlip InferResult e # ContainedH f p) -> f (HFlip InferResult e # p) Source #

RTraversable ast => HTraversable (HFlip GTerm ast) Source # 
Instance details

Defined in Hyper.Unify.Generalize

Methods

hsequence :: forall f (p :: AHyperType -> Type). Applicative f => (HFlip GTerm ast # ContainedH f p) -> f (HFlip GTerm ast # p) Source #

Generic (HFlip f x h) Source # 
Instance details

Defined in Hyper.Combinator.Flip

Associated Types

type Rep (HFlip f x h) :: Type -> Type #

Methods

from :: HFlip f x h -> Rep (HFlip f x h) x0 #

to :: Rep (HFlip f x h) x0 -> HFlip f x h #

Constraints (HFlip f x h) Show => Show (HFlip f x h) Source # 
Instance details

Defined in Hyper.Combinator.Flip

Methods

showsPrec :: Int -> HFlip f x h -> ShowS #

show :: HFlip f x h -> String #

showList :: [HFlip f x h] -> ShowS #

Constraints (HFlip f x h) Binary => Binary (HFlip f x h) Source # 
Instance details

Defined in Hyper.Combinator.Flip

Methods

put :: HFlip f x h -> Put #

get :: Get (HFlip f x h) #

putList :: [HFlip f x h] -> Put #

Constraints (HFlip f x h) NFData => NFData (HFlip f x h) Source # 
Instance details

Defined in Hyper.Combinator.Flip

Methods

rnf :: HFlip f x h -> () #

Constraints (HFlip f x h) Eq => Eq (HFlip f x h) Source # 
Instance details

Defined in Hyper.Combinator.Flip

Methods

(==) :: HFlip f x h -> HFlip f x h -> Bool #

(/=) :: HFlip f x h -> HFlip f x h -> Bool #

Constraints (HFlip f x h) Ord => Ord (HFlip f x h) Source # 
Instance details

Defined in Hyper.Combinator.Flip

Methods

compare :: HFlip f x h -> HFlip f x h -> Ordering #

(<) :: HFlip f x h -> HFlip f x h -> Bool #

(<=) :: HFlip f x h -> HFlip f x h -> Bool #

(>) :: HFlip f x h -> HFlip f x h -> Bool #

(>=) :: HFlip f x h -> HFlip f x h -> Bool #

max :: HFlip f x h -> HFlip f x h -> HFlip f x h #

min :: HFlip f x h -> HFlip f x h -> HFlip f x h #

type HWitnessType (HFlip Ann h) Source # 
Instance details

Defined in Hyper.Combinator.Ann

type HWitnessType (HFlip InferResult e) Source # 
Instance details

Defined in Hyper.Infer.Result

type HWitnessType (HFlip GTerm a) Source # 
Instance details

Defined in Hyper.Unify.Generalize

type HNodesConstraint (HFlip Ann h) c Source # 
Instance details

Defined in Hyper.Combinator.Ann

type HNodesConstraint (HFlip Ann h) c = (Recursive c, c h)
type HNodesConstraint (HFlip InferResult e) c Source # 
Instance details

Defined in Hyper.Infer.Result

type HNodesConstraint (HFlip GTerm a) c Source # 
Instance details

Defined in Hyper.Unify.Generalize

type HNodesConstraint (HFlip GTerm a) c = (c a, Recursive c)
type Rep (HFlip f x h) Source # 
Instance details

Defined in Hyper.Combinator.Flip

type Rep (HFlip f x h) = D1 ('MetaData "HFlip" "Hyper.Combinator.Flip" "hypertypes-0.2.2-9g9pX7Hb2mGI4yyssTDpOd" 'True) (C1 ('MetaCons "MkHFlip" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f (GetHyperType h) # x))))

_HFlip :: Iso (HFlip f0 x0 # k0) (HFlip f1 x1 # k1) (f0 k0 # x0) (f1 k1 # x1) Source #

An Iso from Flip to its content.

Using _Flip rather than the MkFlip data constructor is recommended, because it helps the type inference know that ANode c is parameterized with a HyperType.

hflipped :: Iso (f0 k0 # x0) (f1 k1 # x1) (HFlip f0 x0 # k0) (HFlip f1 x1 # k1) Source #

htraverseFlipped :: (Applicative f, HTraversable (HFlip h a)) => (forall n. HWitness (HFlip h a) n -> (p # n) -> f (q # n)) -> (h p # a) -> f (h q # a) Source #

Convinience function for traversal over second last HyperType argument.