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

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 #

Methods

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

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
...
...Couldn't match type ‘Char’ with ‘Int’
...

>>> :t view (getting fstIntToChar)
view (getting fstIntToChar) :: (Int, r) -> Int

Instances