{-# LANGUAGE PatternSynonyms #-}
module Optic.Prism
(
Prism
, Prism'
, prism
, prism'
, is
, only
, AsAny(..)
, AsSubtype(..)
, Cons(..)
, (<|)
, cons
, uncons
, _head
, _tail
, pattern (:<)
, Snoc(..)
, (|>)
, snoc
, unsnoc
, _init
, _last
, pattern (:>)
, AsEmpty(..)
, pattern Empty
) where
import Control.Lens.Cons (pattern (:<), pattern (:>), Cons(_Cons),
Snoc(_Snoc), cons, snoc, uncons, unsnoc, (<|),
_head, _init, _last, _tail, (|>))
import Control.Lens.Empty (AsEmpty(_Empty), pattern Empty)
import Control.Lens.Extras (is)
import Control.Lens.Prism (Prism, Prism', only, prism, prism')
import Data.Generics.Sum.Any (AsAny(_As))
import Data.Generics.Sum.Subtype (AsSubtype(_Sub))