{-# LANGUAGE GADTs #-} {-# LANGUAGE RankNTypes #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE PolyKinds #-} module Data.GADT.Compare.Extra where import Data.GADT.Compare ( GOrdering(..) ) fromOrdering :: Ordering -> GOrdering a a fromOrdering :: forall {k} (a :: k). Ordering -> GOrdering a a fromOrdering Ordering ordering = case Ordering ordering of Ordering LT -> GOrdering a a forall {k} (a :: k) (b :: k). GOrdering a b GLT Ordering EQ -> GOrdering a a forall {k} (a :: k). GOrdering a a GEQ Ordering GT -> GOrdering a a forall {k} (a :: k) (b :: k). GOrdering a b GGT infixr 3 >>? (>>?) :: forall k (a :: k) b a' b'. GOrdering a b -> ((a ~ b) => GOrdering a' b') -> GOrdering a' b' GOrdering a b GLT >>? :: forall {k} k (a :: k) (b :: k) (a' :: k) (b' :: k). GOrdering a b -> ((a ~ b) => GOrdering a' b') -> GOrdering a' b' >>? (a ~ b) => GOrdering a' b' _ = GOrdering a' b' forall {k} (a :: k) (b :: k). GOrdering a b GLT GOrdering a b GEQ >>? (a ~ b) => GOrdering a' b' r = GOrdering a' b' (a ~ b) => GOrdering a' b' r GOrdering a b GGT >>? (a ~ b) => GOrdering a' b' _ = GOrdering a' b' forall {k} (a :: k) (b :: k). GOrdering a b GGT