witness-0.5: src/Data/Type/With.hs
module Data.Type.With where
import Control.Category
import Data.Kind
import Data.Type.Equality
withRefl :: forall k (a :: k) (b :: k) (r :: Type). a :~: b -> (a ~ b => r) -> r
withRefl Refl r = r
reflCat ::
forall k (cat :: k -> k -> Type) (a :: k) (b :: k). Category cat
=> a :~: b -> cat a b
reflCat Refl = id
reflWitCat ::
forall kq (cat :: kq -> kq -> Type) kp (w :: kp -> kq) (a :: kp) (b :: kp). Category cat
=> a :~: b -> cat (w a) (w b)
reflWitCat Refl = id