blanks-0.3.0: src/Blanks/RightAdjunct.hs
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE UndecidableInstances #-}
module Blanks.RightAdjunct
( RightAdjunct
, RightAdjunction
, RightAdjunctionApplicative
) where
import Control.Monad.Identity (Identity)
import Data.Functor.Adjunction (Adjunction (..))
type family RightAdjunct (t :: * -> *) :: * -> *
type instance RightAdjunct Identity = Identity
type RightAdjunction (t :: * -> *) = Adjunction t (RightAdjunct t)
type RightAdjunctionApplicative t = (RightAdjunction t, Applicative (RightAdjunct t))