module Data.Connection.Optic (
    dual
  , just
  , binord
  , ordbin
  , connected
) where

import Data.Connection (Conn)
import Data.Prd
import Data.Profunctor.Optic.Grate
import Data.Profunctor.Optic.Import
import qualified Data.Connection as C

dual :: Prd a => Prd b => Conn a b -> Grate' (Down b) (Down a)
dual = connected . C.dual

just :: Prd a => Prd b => Conn a b -> Grate' (Maybe a) (Maybe b)
just = connected . C.just

ordbin :: Grate' Ordering Bool
ordbin = connected C.ordbin

binord :: Grate' Bool Ordering
binord = connected C.binord