distributors-0.6.0.0: Unifying Parsers, Printers & Grammars
Copyright(C) 2026 - Eitan Chatav
LicenseBSD-style (see the file LICENSE)
MaintainerEitan Chatav <eitan.chatav@gmail.com>
Stabilityprovisional
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

Data.Traversable.Homogeneous

Contents

Description

 
Synopsis

Homogeneous

class Traversable t => Homogeneous (t :: Type -> Type) where Source #

A class of Homogeneous countable sums of countable products.

Minimal complete definition

Nothing

Methods

homogeneously :: Distributor p => p a b -> p (t a) (t b) Source #

Sequences actions homogeneously.

homogeneously @Maybe = optionalP
homogeneously @[] = manyP

Any Traversable & Distributive countable product can be given a default implementation for the homogeneously method with ditraverse.

homogeneously = ditraverse

And any user-defined homogeneous algebraic datatype has a default instance for Homogeneous, by deriving Generic1.

default homogeneously :: (Generic1 t, Homogeneous (Rep1 t), Distributor p) => p a b -> p (t a) (t b) Source #

Instances

Instances details
Homogeneous Complex Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p (Complex a) (Complex b) Source #

Homogeneous Identity Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p (Identity a) (Identity b) Source #

Homogeneous Dual Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p (Dual a) (Dual b) Source #

Homogeneous Product Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p (Product a) (Product b) Source #

Homogeneous Sum Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p (Sum a) (Sum b) Source #

Homogeneous Par1 Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p (Par1 a) (Par1 b) Source #

Homogeneous Seq Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p (Seq a) (Seq b) Source #

Homogeneous Tree Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p (Tree a) (Tree b) Source #

Homogeneous Vector Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p (Vector a) (Vector b) Source #

Homogeneous Maybe Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p (Maybe a) (Maybe b) Source #

Homogeneous [] Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p [a] [b] Source #

Homogeneous (Proxy :: Type -> Type) Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p (Proxy a) (Proxy b) Source #

Homogeneous (U1 :: Type -> Type) Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p (U1 a) (U1 b) Source #

Homogeneous (V1 :: Type -> Type) Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p (V1 a) (V1 b) Source #

Homogeneous (Const Void :: Type -> Type) Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p (Const Void a) (Const Void b) Source #

Homogeneous (Const () :: Type -> Type) Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p (Const () a) (Const () b) Source #

Homogeneous f => Homogeneous (Rec1 f) Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p (Rec1 f a) (Rec1 f b) Source #

Homogeneous (Tagged s) Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p (Tagged s a) (Tagged s b) Source #

(Homogeneous s, Homogeneous t) => Homogeneous (Product s t) Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p (Product s t a) (Product s t b) Source #

(Homogeneous s, Homogeneous t) => Homogeneous (Sum s t) Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p (Sum s t a) (Sum s t b) Source #

(Homogeneous s, Homogeneous t) => Homogeneous (s :*: t) Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p ((s :*: t) a) ((s :*: t) b) Source #

(Homogeneous s, Homogeneous t) => Homogeneous (s :+: t) Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p ((s :+: t) a) ((s :+: t) b) Source #

Homogeneous (K1 i Void :: Type -> Type) Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p (K1 i Void a) (K1 i Void b) Source #

Homogeneous (K1 i () :: Type -> Type) Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p (K1 i () a) (K1 i () b) Source #

(Homogeneous s, Homogeneous t) => Homogeneous (Compose s t) Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p (Compose s t a) (Compose s t b) Source #

(Homogeneous s, Homogeneous t) => Homogeneous (s :.: t) Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p ((s :.: t) a) ((s :.: t) b) Source #

Homogeneous t => Homogeneous (M1 i c t) Source # 
Instance details

Defined in Data.Traversable.Homogeneous

Methods

homogeneously :: Distributor p => p a b -> p (M1 i c t a) (M1 i c t b) Source #