generic-lens-2.2.2.0: Generically derive traversals, lenses and prisms.

Copyright | (C) 2020 Csongor Kiss
License | BSD3
Maintainer | Csongor Kiss <kiss.csongor.kiss@gmail.com>
Stability | experimental
Portability | non-portable
Safe Haskell | None
Language | Haskell2010

Data.Generics.Product.Any

Contents

- Lenses

Description

Derive a variety of lenses generically.

Synopsis

- class HasAny (sel :: k) s t a b | s sel -> a where
  - the :: Lens s t a b

# Lenses

## Running example:

    >>> :set -XTypeApplications
    >>> :set -XDataKinds
    >>> :set -XDeriveGeneric
    >>> import GHC.Generics
    >>> :m +Data.Generics.Internal.VL.Lens
    >>> :{
    data Human = Human
      { name    :: String
      , age     :: Int
      , address :: String
      }
      deriving (Generic, Show)
    human :: Human
    human = Human "Tunyasz" 50 "London"
    :}

class HasAny (sel :: k) s t a b | s sel -> a where Source #

Methods

the :: Lens s t a b Source #

A lens that focuses on a part of a product as identified by some selector. Currently supported selectors are field names, positions and unique types. Compatible with the lens package's `Lens` type.

    >>> human ^. the @Int
    50

    >>> human ^. the @"name"
    "Tunyasz"

    >>> human ^. the @3
    "London"

#### Instances

Instances details

HasPosition i s t a b => HasAny (i :: Nat) s t a b Source # |
Instance details Defined in Data.Generics.Product.Any Methods the :: Lens s t a b Source #
HasField field s t a b => HasAny (field :: Symbol) s t a b Source # |
Instance details Defined in Data.Generics.Product.Any Methods the :: Lens s t a b Source #
(HasType a s, t ~ s, a ~ b) => HasAny (a :: Type) s t a b Source # |
Instance details Defined in Data.Generics.Product.Any Methods the :: Lens s t a b Source #