endo-0.3.0.0: Endomorphism utilities.

Copyright(c) 2013-2015 Peter Trško
LicenseBSD3
Maintainerpeter.trsko@gmail.com
Stabilityexperimental
PortabilityNoImplicitPrelude
Safe HaskellSafe
LanguageHaskell2010

Data.Monoid.Endo

Contents

Description

Utilities for Endo data type from Data.Monoid module.

Synopsis

Endo

type E a = a -> a Source #

Type synonym for endomorphsm; it can be used to simplify type signatures.

newtype Endo a :: * -> * #

The monoid of endomorphisms under composition.

Constructors

Endo 

Fields

Instances

Generic (Endo a) 

Associated Types

type Rep (Endo a) :: * -> * #

Methods

from :: Endo a -> Rep (Endo a) x #

to :: Rep (Endo a) x -> Endo a #

Semigroup (Endo a) 

Methods

(<>) :: Endo a -> Endo a -> Endo a #

sconcat :: NonEmpty (Endo a) -> Endo a #

stimes :: Integral b => b -> Endo a -> Endo a #

Monoid (Endo a) 

Methods

mempty :: Endo a #

mappend :: Endo a -> Endo a -> Endo a #

mconcat :: [Endo a] -> Endo a #

Default (Endo a) 

Methods

def :: Endo a #

FromEndo (Endo a) Source # 

Associated Types

type EndoOperatedOn (Endo a) :: * Source #

AnEndo (Endo a) Source # 

Associated Types

type EndoOperatesOn (Endo a) :: * Source #

FoldEndoArgs (Endo a) Source # 

Associated Types

type ResultOperatesOn (Endo a) :: * Source #

type Result (Endo a) :: * Source #

type Rep (Endo a) 
type Rep (Endo a) = D1 (MetaData "Endo" "Data.Monoid" "base" True) (C1 (MetaCons "Endo" PrefixI True) (S1 (MetaSel (Just Symbol "appEndo") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (a -> a))))
type EndoOperatedOn (Endo a) Source # 
type EndoOperatedOn (Endo a) = a
type EndoOperatesOn (Endo a) Source # 
type EndoOperatesOn (Endo a) = a
type ResultOperatesOn (Endo a) Source # 
type ResultOperatesOn (Endo a) = a
type Result (Endo a) Source # 
type Result (Endo a) = Endo a

runEndo :: a -> Endo a -> a Source #

Flipped version of appEndo.

mapEndo :: (E a -> E b) -> Endo a -> Endo b Source #

Transform function wrapped in Endo.

mapEndo2 :: (E a -> E b -> E c) -> Endo a -> Endo b -> Endo c Source #

Variation of mapEndo for functions with arity two.

liftEndo :: Functor f => Endo a -> Endo (f a) Source #

Apply fmap to function wrapped in Endo. It's a short hand for mapEndo fmap.

Lens

endo :: Functor f => (E a -> f (E b)) -> Endo a -> f (Endo b) Source #

Lens for Endo. In terms of lens package it would have type:

endo :: Lens (Endo a) (Endo b) (E a) (E b)

For details see lens package.