lens-4.15.4: Lenses, Folds and Traversals

Copyright(C) 2012-16 Edward Kmett
LicenseBSD-style (see the file LICENSE)
MaintainerEdward Kmett <ekmett@gmail.com>
Safe HaskellNone



Note: GHC.Generics exports a number of names that collide with Control.Lens.

You can use hiding or imports to mitigate this to an extent, and the following imports, represent a fair compromise for user code:

import Control.Lens hiding (Rep)
import GHC.Generics hiding (from, to)

You can use generic to replace from and to from GHC.Generics, and probably won't be explicitly referencing Rep from Control.Lens in code that uses generics.

This module provides compatibility with older GHC versions by using the generic-deriving package.



generic :: Generic a => Iso' a (Rep a b) #

Convert from the data type to its representation (or back)

>>> "hello"^.generic.from generic :: String

generic1 :: Generic1 f => Iso' (f a) (Rep1 f a) #

Convert from the data type to its representation (or back)

_V1 :: Over p f (V1 s) (V1 t) a b #

_U1 :: Iso (U1 p) (U1 q) () () #

_Par1 :: Iso (Par1 p) (Par1 q) p q #

_Rec1 :: Iso (Rec1 f p) (Rec1 g q) (f p) (g q) #

_K1 :: Iso (K1 i c p) (K1 j d q) c d #

_M1 :: Iso (M1 i c f p) (M1 j d g q) (f p) (g q) #

_L1 :: Prism' ((f :+: g) a) (f a) #

_R1 :: Prism' ((f :+: g) a) (g a) #

You can access fields of `data (f :*: g) p` by using it's Field1 and Field2 instances

_UAddr :: Iso (UAddr p) (UAddr q) (Ptr c) (Ptr d) #

_UInt :: Iso (UInt p) (UInt q) Int Int #