traverse-code-0.1: General data structure lifting for Template Haskell
Safe HaskellSafe-Inferred
LanguageHaskell2010

Language.Haskell.TH.TraverseCode

Synopsis

Documentation

class TraverseCode t where Source #

Containers supporting "traversal" in Code.

Minimal complete definition

Nothing

Methods

traverseCode :: Quote m => (a -> Code m b) -> t a -> Code m (t b) Source #

Given a container and a function to fill it with splices, produce a splice that will generate a container of their results.

default traverseCode :: (Quote m, GTraverseCode (Rep1 t), Generic1 t) => (a -> Code m b) -> t a -> Code m (t b) Source #

Instances

Instances details
TraverseCode Identity Source # 
Instance details

Defined in Language.Haskell.TH.TraverseCode

Methods

traverseCode :: forall (m :: Type -> Type) a b. Quote m => (a -> Code m b) -> Identity a -> Code m (Identity b) Source #

TraverseCode Par1 Source # 
Instance details

Defined in Language.Haskell.TH.TraverseCode

Methods

traverseCode :: forall (m :: Type -> Type) a b. Quote m => (a -> Code m b) -> Par1 a -> Code m (Par1 b) Source #

TraverseCode Digit Source # 
Instance details

Defined in Language.Haskell.TH.TraverseCode

Methods

traverseCode :: forall (m :: Type -> Type) a b. Quote m => (a -> Code m b) -> Digit a -> Code m (Digit b) Source #

TraverseCode Elem Source # 
Instance details

Defined in Language.Haskell.TH.TraverseCode

Methods

traverseCode :: forall (m :: Type -> Type) a b. Quote m => (a -> Code m b) -> Elem a -> Code m (Elem b) Source #

TraverseCode FingerTree Source # 
Instance details

Defined in Language.Haskell.TH.TraverseCode

Methods

traverseCode :: forall (m :: Type -> Type) a b. Quote m => (a -> Code m b) -> FingerTree a -> Code m (FingerTree b) Source #

TraverseCode Node Source # 
Instance details

Defined in Language.Haskell.TH.TraverseCode

Methods

traverseCode :: forall (m :: Type -> Type) a b. Quote m => (a -> Code m b) -> Node a -> Code m (Node b) Source #

TraverseCode Seq Source # 
Instance details

Defined in Language.Haskell.TH.TraverseCode

Methods

traverseCode :: forall (m :: Type -> Type) a b. Quote m => (a -> Code m b) -> Seq a -> Code m (Seq b) Source #

TraverseCode Maybe Source # 
Instance details

Defined in Language.Haskell.TH.TraverseCode

Methods

traverseCode :: forall (m :: Type -> Type) a b. Quote m => (a -> Code m b) -> Maybe a -> Code m (Maybe b) Source #

TraverseCode [] Source # 
Instance details

Defined in Language.Haskell.TH.TraverseCode

Methods

traverseCode :: forall (m :: Type -> Type) a b. Quote m => (a -> Code m b) -> [a] -> Code m [b] Source #

Lift a => TraverseCode (Either a) Source # 
Instance details

Defined in Language.Haskell.TH.TraverseCode

Methods

traverseCode :: forall (m :: Type -> Type) a0 b. Quote m => (a0 -> Code m b) -> Either a a0 -> Code m (Either a b) Source #

TraverseCode (U1 :: TYPE LiftedRep -> Type) Source # 
Instance details

Defined in Language.Haskell.TH.TraverseCode

Methods

traverseCode :: forall (m :: Type -> Type) a b. Quote m => (a -> Code m b) -> U1 a -> Code m (U1 b) Source #

TraverseCode (V1 :: TYPE LiftedRep -> Type) Source # 
Instance details

Defined in Language.Haskell.TH.TraverseCode

Methods

traverseCode :: forall (m :: Type -> Type) a b. Quote m => (a -> Code m b) -> V1 a -> Code m (V1 b) Source #

Lift a => TraverseCode ((,) a) Source # 
Instance details

Defined in Language.Haskell.TH.TraverseCode

Methods

traverseCode :: forall (m :: Type -> Type) a0 b. Quote m => (a0 -> Code m b) -> (a, a0) -> Code m (a, b) Source #

Lift a => TraverseCode (Const a :: TYPE LiftedRep -> Type) Source # 
Instance details

Defined in Language.Haskell.TH.TraverseCode

Methods

traverseCode :: forall (m :: Type -> Type) a0 b. Quote m => (a0 -> Code m b) -> Const a a0 -> Code m (Const a b) Source #

(TraverseCode f, TraverseCode g) => TraverseCode (Product f g) Source # 
Instance details

Defined in Language.Haskell.TH.TraverseCode

Methods

traverseCode :: forall (m :: Type -> Type) a b. Quote m => (a -> Code m b) -> Product f g a -> Code m (Product f g b) Source #

(TraverseCode f, TraverseCode g) => TraverseCode (Sum f g) Source # 
Instance details

Defined in Language.Haskell.TH.TraverseCode

Methods

traverseCode :: forall (m :: Type -> Type) a b. Quote m => (a -> Code m b) -> Sum f g a -> Code m (Sum f g b) Source #

(TraverseCode f, TraverseCode g) => TraverseCode (f :*: g) Source # 
Instance details

Defined in Language.Haskell.TH.TraverseCode

Methods

traverseCode :: forall (m :: Type -> Type) a b. Quote m => (a -> Code m b) -> (f :*: g) a -> Code m ((f :*: g) b) Source #

(TraverseCode f, TraverseCode g) => TraverseCode (f :+: g) Source # 
Instance details

Defined in Language.Haskell.TH.TraverseCode

Methods

traverseCode :: forall (m :: Type -> Type) a b. Quote m => (a -> Code m b) -> (f :+: g) a -> Code m ((f :+: g) b) Source #

Lift a => TraverseCode (K1 i a :: TYPE LiftedRep -> Type) Source # 
Instance details

Defined in Language.Haskell.TH.TraverseCode

Methods

traverseCode :: forall (m :: Type -> Type) a0 b. Quote m => (a0 -> Code m b) -> K1 i a a0 -> Code m (K1 i a b) Source #

TraverseCode f => TraverseCode (M1 i c f) Source # 
Instance details

Defined in Language.Haskell.TH.TraverseCode

Methods

traverseCode :: forall (m :: Type -> Type) a b. Quote m => (a -> Code m b) -> M1 i c f a -> Code m (M1 i c f b) Source #

sequenceCode :: (TraverseCode t, Quote m) => t (Code m a) -> Code m (t a) Source #

Given a container of splices, produce a splice that will generate a container of their results.

genericTraverseCode :: (Quote m, GTraverseCode (Rep1 t), Generic1 t) => (a -> Code m b) -> t a -> Code m (t b) Source #

Like traverseCode, but using the Generics.Linear.Generic1 instance.

genericSequenceCode :: (Quote m, GTraverseCode (Rep1 t), Generic1 t) => t (Code m a) -> Code m (t a) Source #

Like sequenceCode, but using the Generics.Linear.Generic1 instance.