{-# OPTIONS_HADDOCK show-extensions #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE BangPatterns, FlexibleContexts #-}
module Phladiprelio.Basis where
import GHC.Base
data Result t a b c = R {forall (t :: * -> *) a b c. Result t a b c -> t a
line :: !(t a), forall (t :: * -> *) a b c. Result t a b c -> b
propertiesF :: !b, forall (t :: * -> *) a b c. Result t a b c -> c
transPropertiesF :: !c} deriving Result t a b c -> Result t a b c -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall (t :: * -> *) a b c.
(Eq b, Eq c, Eq (t a)) =>
Result t a b c -> Result t a b c -> Bool
/= :: Result t a b c -> Result t a b c -> Bool
$c/= :: forall (t :: * -> *) a b c.
(Eq b, Eq c, Eq (t a)) =>
Result t a b c -> Result t a b c -> Bool
== :: Result t a b c -> Result t a b c -> Bool
$c== :: forall (t :: * -> *) a b c.
(Eq b, Eq c, Eq (t a)) =>
Result t a b c -> Result t a b c -> Bool
Eq
instance (Ord (t a), Ord b, Ord c) => Ord (Result t a b c) where
compare :: Result t a b c -> Result t a b c -> Ordering
compare Result t a b c
x Result t a b c
y
= case forall a. Ord a => a -> a -> Ordering
compare (forall (t :: * -> *) a b c. Result t a b c -> c
transPropertiesF Result t a b c
x) (forall (t :: * -> *) a b c. Result t a b c -> c
transPropertiesF Result t a b c
y) of
!Ordering
EQ -> case forall a. Ord a => a -> a -> Ordering
compare (forall (t :: * -> *) a b c. Result t a b c -> b
propertiesF Result t a b c
x) (forall (t :: * -> *) a b c. Result t a b c -> b
propertiesF Result t a b c
y) of
!Ordering
EQ -> forall a. Ord a => a -> a -> Ordering
compare (forall (t :: * -> *) a b c. Result t a b c -> t a
line Result t a b c
x) (forall (t :: * -> *) a b c. Result t a b c -> t a
line Result t a b c
y)
!Ordering
z -> Ordering
z
!Ordering
z0 -> Ordering
z0
{-# INLINE compare #-}
data FuncRep2 a b c = D { forall a b c. FuncRep2 a b c -> a -> b
getAB :: (a -> b), forall a b c. FuncRep2 a b c -> b -> c
getBC :: (b -> c) }
getAC :: FuncRep2 a b c -> (a -> c)
getAC :: forall a b c. FuncRep2 a b c -> a -> c
getAC (D a -> b
f b -> c
g) = b -> c
g forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> b
f
{-# INLINE getAC #-}
data Result2 a b c = R2 {forall a b c. Result2 a b c -> a
line2 :: !a, forall a b c. Result2 a b c -> b
propertiesF2 :: !b, forall a b c. Result2 a b c -> c
transPropertiesF2 :: !c} deriving Result2 a b c -> Result2 a b c -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall a b c.
(Eq a, Eq b, Eq c) =>
Result2 a b c -> Result2 a b c -> Bool
/= :: Result2 a b c -> Result2 a b c -> Bool
$c/= :: forall a b c.
(Eq a, Eq b, Eq c) =>
Result2 a b c -> Result2 a b c -> Bool
== :: Result2 a b c -> Result2 a b c -> Bool
$c== :: forall a b c.
(Eq a, Eq b, Eq c) =>
Result2 a b c -> Result2 a b c -> Bool
Eq
instance (Ord a, Ord b, Ord c) => Ord (Result2 a b c) where
compare :: Result2 a b c -> Result2 a b c -> Ordering
compare Result2 a b c
x Result2 a b c
y
= case forall a. Ord a => a -> a -> Ordering
compare (forall a b c. Result2 a b c -> c
transPropertiesF2 Result2 a b c
x) (forall a b c. Result2 a b c -> c
transPropertiesF2 Result2 a b c
y) of
!Ordering
EQ -> case forall a. Ord a => a -> a -> Ordering
compare (forall a b c. Result2 a b c -> b
propertiesF2 Result2 a b c
x) (forall a b c. Result2 a b c -> b
propertiesF2 Result2 a b c
y) of
!Ordering
EQ -> forall a. Ord a => a -> a -> Ordering
compare (forall a b c. Result2 a b c -> a
line2 Result2 a b c
x) (forall a b c. Result2 a b c -> a
line2 Result2 a b c
y)
!Ordering
z -> Ordering
z
!Ordering
z0 -> Ordering
z0
{-# INLINE compare #-}