Module

Data.Lens.Grate

This module defines functions for working with grates.

See http://r6research.livejournal.com/28050.html.

#grate

grate :: forall s t a b. (((s -> a) -> b) -> t) -> Grate s t a b

#withGrate

withGrate :: forall s t a b. AGrate s t a b -> ((s -> a) -> b) -> t

#cloneGrate

cloneGrate :: forall s t a b. AGrate s t a b -> Grate s t a b

#cotraversed

cotraversed :: forall f a b. Distributive f => Grate (f a) (f b) a b

#zipWithOf

zipWithOf :: forall s t a b. Optic Zipping s t a b -> (a -> a -> b) -> s -> s -> t

#zipFWithOf

zipFWithOf :: forall f s t a b. Optic (Costar f) s t a b -> (f a -> b) -> (f s -> t)

#collectOf

collectOf :: forall f s t a b. Functor f => Optic (Costar f) s t a (f a) -> (b -> s) -> f b -> t

Re-exports from Data.Lens.Types

#Optic

type Optic :: (Type -> Type -> Type) -> Type -> Type -> Type -> Type -> Typetype Optic p s t a b = p a b -> p s t

A general-purpose Data.Lens.

#Grate'

type Grate' s a = Grate s s a a

#Grate

type Grate s t a b = forall p. Closed p => Optic p s t a b

A grate (http://r6research.livejournal.com/28050.html)

#AGrate

type AGrate s t a b = Optic (Grating a b) s t a b

A grate defined in terms of Grating, which can be used to avoid issues with impredicativity.

Modules