{-# OPTIONS_HADDOCK not-home #-}
module Optics.Internal.Optic.Types where
import GHC.Exts (Constraint)
import Optics.Internal.Bi
import Optics.Internal.Profunctor
data An_Iso
data A_Lens
data A_Prism
data An_AffineTraversal
data A_Traversal
data A_Setter
data A_ReversedPrism
data A_Getter
data An_AffineFold
data A_Fold
data A_ReversedLens
data A_Review
type family Constraints (k :: *) (p :: * -> * -> * -> *) :: Constraint where
Constraints An_Iso p = Profunctor p
Constraints A_Lens p = Strong p
Constraints A_ReversedLens p = Costrong p
Constraints A_Prism p = Choice p
Constraints A_ReversedPrism p = Cochoice p
Constraints An_AffineTraversal p = Visiting p
Constraints A_Traversal p = Traversing p
Constraints A_Setter p = Mapping p
Constraints A_Getter p = (Bicontravariant p, Cochoice p, Strong p)
Constraints An_AffineFold p = (Bicontravariant p, Cochoice p, Visiting p)
Constraints A_Fold p = (Bicontravariant p, Cochoice p, Traversing p)
Constraints A_Review p = (Bifunctor p, Choice p, Costrong p)