lens-sop-0.3.0: Computing lenses generically using generics-sop
Safe HaskellSafe-Inferred
LanguageHaskell2010

Generics.SOP.Lens

Description

Generalized lenses

Intended to be imported qualified

import Generics.SOP.Lens as GLens
Synopsis

Generalized lenses

data GLens (r :: Type -> Type) (w :: Type -> Type) a b Source #

GLens generalizes a monomorphic lens by allowing for different monads for the getter and modifier

Instances

Instances details
Monad r => Category (GLens r w :: TYPE LiftedRep -> Type -> Type) Source # 
Instance details

Defined in Generics.SOP.Lens

Methods

id :: forall (a :: k). GLens r w a a #

(.) :: forall (b :: k) (c :: k) (a :: k). GLens r w b c -> GLens r w a b -> GLens r w a c #

lens :: (a -> r b) -> ((b -> w b) -> a -> w a) -> GLens r w a b Source #

get :: GLens r w a b -> a -> r b Source #

modify :: GLens r w a b -> (b -> w b) -> a -> w a Source #

set :: Monad w => GLens r w a b -> b -> a -> w a Source #

Conversion

fromLens :: (Monad r, Monad w) => Lens' a b -> GLens r w a b Source #

fromIso :: (Monad r, Monad w) => Iso' a b -> GLens r w a b Source #

Generic computation of lenses for record type

glenses :: forall r w a xs. (Generic a, Code a ~ '[xs], Monad r, Monad w) => NP (GLens r w a) xs Source #

Labels for the representation types

np :: forall r w xs. (Monad r, Monad w, SListI xs) => NP (GLens r w (NP I xs)) xs Source #

rep :: (Monad r, Monad w, Generic a) => GLens r w a (Rep a) Source #

sop :: (Monad r, Monad w) => GLens r w (SOP f '[xs]) (NP f xs) Source #

head :: (Monad r, Monad w) => GLens r w (NP f (x ': xs)) (f x) Source #

tail :: (Monad r, Monad w) => GLens r w (NP f (x ': xs)) (NP f xs) Source #

i :: (Monad r, Monad w) => GLens r w (I a) a Source #