product-isomorphic-0.0.3.3: Weaken applicative functor on products

Copyright2017 Kei Hibino
LicenseBSD3
Maintainerex8k.hibino@gmail.com
Stabilityexperimental
Portabilityunknown
Safe HaskellNone
LanguageHaskell2010

Data.Functor.ProductIsomorphic.Instances

Contents

Description

This module defines functor instances morphed functions are restricted to products.

Synopsis

Documentation

newtype WrappedFunctor f a Source #

Wrapped functor type to make instances of product-iso functors.

Constructors

WrapFunctor 

Fields

newtype WrappedAlter f a b Source #

Wrapped Const Alternative objects to make instances like Const functor.

Constructors

WrapAlter 

Fields

Instances
Alternative f => ProductIsoApplicative (WrappedAlter f a) Source # 
Instance details

Defined in Data.Functor.ProductIsomorphic.Instances

Methods

pureP :: ProductConstructor a0 => a0 -> WrappedAlter f a a0 Source #

(|*|) :: WrappedAlter f a (a0 -> b) -> WrappedAlter f a a0 -> WrappedAlter f a b Source #

ProductIsoFunctor (WrappedAlter f a) Source # 
Instance details

Defined in Data.Functor.ProductIsomorphic.Instances

Methods

(|$|) :: ProductConstructor (a0 -> b) => (a0 -> b) -> WrappedAlter f a a0 -> WrappedAlter f a b Source #

Alternative f => ProductIsoEmpty (WrappedAlter f a) () Source # 
Instance details

Defined in Data.Functor.ProductIsomorphic.Instances

Methods

pureE :: WrappedAlter f a () Source #

peRight :: WrappedAlter f a (a0, ()) -> WrappedAlter f a a0 Source #

peLeft :: WrappedAlter f a ((), a0) -> WrappedAlter f a a0 Source #

Orphan instances

Monoid a => ProductIsoApplicative (Const a :: * -> *) Source # 
Instance details

Methods

pureP :: ProductConstructor a0 => a0 -> Const a a0 Source #

(|*|) :: Const a (a0 -> b) -> Const a a0 -> Const a b Source #

ProductIsoFunctor (Const a :: * -> *) Source # 
Instance details

Methods

(|$|) :: ProductConstructor (a0 -> b) => (a0 -> b) -> Const a a0 -> Const a b Source #

Monoid a => ProductIsoEmpty (Const a :: * -> *) () Source # 
Instance details

Methods

pureE :: Const a () Source #

peRight :: Const a (a0, ()) -> Const a a0 Source #

peLeft :: Const a ((), a0) -> Const a a0 Source #