optics-core-0.2: Optics as an abstract interface: core definitions

Safe HaskellNone
LanguageHaskell2010

Optics.ReadOnly

Description

This module defines getting, which turns a read-write optic into its read-only counterpart.

Synopsis

Documentation

class ToReadOnly k s t a b where Source #

Class for read-write optics that have their read-only counterparts.

Methods

getting :: Optic k is s t a b -> Optic' (Join A_Getter k) is s a Source #

Turn read-write optic into its read-only counterpart (or leave read-only optics as-is).

This is useful when you have an optic :: Optic k is s t a b of read-write kind k such that s, t, a, b are rigid, there is no evidence that s ~ t and a ~ b and you want to pass optic to one of the functions that accept read-only optic kinds.

Example:

λ> let fstIntToChar = _1 :: Lens (Int, r) (Char, r) Int Char
λ> :t view fstIntToChar

interactive:1:6: error:
    • Couldn't match type ‘Char’ with ‘Int’
      Expected type: Optic' A_Lens NoIx (Int, r) Int
        Actual type: Lens (Int, r) (Char, r) Int Char
    • In the first argument of ‘view’, namely ‘fstIntToChar’
      In the expression: view fstIntToChar
λ> :t view (getting fstIntToChar)
view (getting fstIntToChar) :: (Int, r) -> Int
Instances
(s ~ t, a ~ b) => ToReadOnly A_Fold s t a b Source # 
Instance details

Defined in Optics.ReadOnly

Methods

getting :: Optic A_Fold is s t a b -> Optic' (Join A_Getter A_Fold) is s a Source #

(s ~ t, a ~ b) => ToReadOnly An_AffineFold s t a b Source # 
Instance details

Defined in Optics.ReadOnly

(s ~ t, a ~ b) => ToReadOnly A_Getter s t a b Source # 
Instance details

Defined in Optics.ReadOnly

Methods

getting :: Optic A_Getter is s t a b -> Optic' (Join A_Getter A_Getter) is s a Source #

ToReadOnly A_ReversedPrism s t a b Source # 
Instance details

Defined in Optics.ReadOnly

ToReadOnly A_Traversal s t a b Source # 
Instance details

Defined in Optics.ReadOnly

Methods

getting :: Optic A_Traversal is s t a b -> Optic' (Join A_Getter A_Traversal) is s a Source #

ToReadOnly An_AffineTraversal s t a b Source # 
Instance details

Defined in Optics.ReadOnly

ToReadOnly A_Prism s t a b Source # 
Instance details

Defined in Optics.ReadOnly

Methods

getting :: Optic A_Prism is s t a b -> Optic' (Join A_Getter A_Prism) is s a Source #

ToReadOnly A_Lens s t a b Source # 
Instance details

Defined in Optics.ReadOnly

Methods

getting :: Optic A_Lens is s t a b -> Optic' (Join A_Getter A_Lens) is s a Source #

ToReadOnly An_Iso s t a b Source # 
Instance details

Defined in Optics.ReadOnly

Methods

getting :: Optic An_Iso is s t a b -> Optic' (Join A_Getter An_Iso) is s a Source #