{-# LANGUAGE CPP #-}
module Data.Bounds
(
LowerBounded (..),
UpperBounded (..),
Bounds (..),
LowerBoundless,
UpperBoundless,
Boundless,
AnyLowerBounded (..),
AnyUpperBounded (..),
)
where
import Control.Applicative (Const (Const))
#if MIN_VERSION_base(4, 16, 0)
import Data.Bits (And (And), Iff (Iff), Ior (Ior), Xor (Xor))
#endif
import Data.Char (GeneralCategory)
import Data.Coerce (Coercible)
import Data.Functor.Identity (Identity (Identity))
import Data.Int (Int16, Int32, Int64, Int8)
import Data.Monoid (Ap (Ap))
import Data.Ord (Down (Down))
import Data.Proxy (Proxy)
import Data.Semigroup
( All,
Any,
Dual (Dual),
First (First),
Last (Last),
Max (Max),
Min (Min),
Product (Product),
Sum (Sum),
WrappedMonoid (WrapMonoid),
)
#if MIN_VERSION_base(4, 18, 0)
import Data.Tuple (Solo (MkSolo))
#elif MIN_VERSION_base(4, 16, 0)
import Data.Tuple (Solo (Solo))
#endif
import Data.Type.Coercion (Coercion)
import Data.Type.Equality ((:~:) (Refl), (:~~:) (HRefl), type (:~:), type (~~))
import Data.Word (Word16, Word32, Word64, Word8)
import Foreign.C.Types
( CBool,
CChar,
CInt,
CIntMax,
CIntPtr,
CLLong,
CLong,
CPtrdiff,
CSChar,
CShort,
CSigAtomic,
CSize,
CUChar,
CUInt,
CUIntMax,
CUIntPtr,
CULLong,
CULong,
CUShort,
CWchar,
)
import Foreign.Ptr (IntPtr, WordPtr)
import GHC.ByteOrder (ByteOrder)
#if MIN_VERSION_base(4, 16, 0)
import GHC.Exts (Levity, VecCount, VecElem)
#else
import GHC.Exts (VecCount, VecElem)
#endif
import GHC.Generics
( Associativity,
DecidedStrictness,
SourceStrictness,
SourceUnpackedness,
)
import GHC.Natural (Natural)
import System.Posix.Types qualified as Posix
class AnyLowerBounded a where
someLowerBound :: Maybe a
default someLowerBound :: (LowerBounded a) => Maybe a
someLowerBound = a -> Maybe a
forall a. a -> Maybe a
Just a
forall a. LowerBounded a => a
lowerBound
{-# INLINE someLowerBound #-}
instance AnyLowerBounded Integer where
someLowerBound :: Maybe Integer
someLowerBound = Maybe Integer
forall a. Maybe a
Nothing
{-# INLINE someLowerBound #-}
instance AnyLowerBounded Natural where
someLowerBound :: Maybe Natural
someLowerBound = Natural -> Maybe Natural
forall a. a -> Maybe a
Just Natural
0
{-# INLINE someLowerBound #-}
class AnyUpperBounded a where
someUpperBound :: Maybe a
default someUpperBound :: (UpperBounded a) => Maybe a
someUpperBound = a -> Maybe a
forall a. a -> Maybe a
Just a
forall a. UpperBounded a => a
upperBound
{-# INLINE someUpperBound #-}
instance AnyUpperBounded Integer where
someUpperBound :: Maybe Integer
someUpperBound = Maybe Integer
forall a. Maybe a
Nothing
{-# INLINE someUpperBound #-}
instance AnyUpperBounded Natural where
someUpperBound :: Maybe Natural
someUpperBound = Maybe Natural
forall a. Maybe a
Nothing
{-# INLINE someUpperBound #-}
class LowerBounded a where
lowerBound :: a
default lowerBound :: (Bounded a) => a
lowerBound = a
forall a. Bounded a => a
minBound
{-# INLINE lowerBound #-}
instance LowerBounded Natural where
lowerBound :: Natural
lowerBound = Natural
0
{-# INLINE lowerBound #-}
class UpperBounded a where
upperBound :: a
default upperBound :: (Bounded a) => a
upperBound = a
forall a. Bounded a => a
maxBound
{-# INLINE upperBound #-}
class LowerBoundless a
instance LowerBoundless Integer
class UpperBoundless a
instance UpperBoundless Integer
instance UpperBoundless Natural
class (LowerBoundless a, UpperBoundless a) => Boundless a
instance Boundless Integer
newtype Bounds a = MkBounds
{
forall a. Bounds a -> a
unBounds :: a
}
deriving stock
(
Bounds a
Bounds a -> Bounds a -> Bounded (Bounds a)
forall a. a -> a -> Bounded a
forall a. Bounded a => Bounds a
$cminBound :: forall a. Bounded a => Bounds a
minBound :: Bounds a
$cmaxBound :: forall a. Bounded a => Bounds a
maxBound :: Bounds a
Bounded,
Bounds a -> Bounds a -> Bool
(Bounds a -> Bounds a -> Bool)
-> (Bounds a -> Bounds a -> Bool) -> Eq (Bounds a)
forall a. Eq a => Bounds a -> Bounds a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: forall a. Eq a => Bounds a -> Bounds a -> Bool
== :: Bounds a -> Bounds a -> Bool
$c/= :: forall a. Eq a => Bounds a -> Bounds a -> Bool
/= :: Bounds a -> Bounds a -> Bool
Eq,
Eq (Bounds a)
Eq (Bounds a) =>
(Bounds a -> Bounds a -> Ordering)
-> (Bounds a -> Bounds a -> Bool)
-> (Bounds a -> Bounds a -> Bool)
-> (Bounds a -> Bounds a -> Bool)
-> (Bounds a -> Bounds a -> Bool)
-> (Bounds a -> Bounds a -> Bounds a)
-> (Bounds a -> Bounds a -> Bounds a)
-> Ord (Bounds a)
Bounds a -> Bounds a -> Bool
Bounds a -> Bounds a -> Ordering
Bounds a -> Bounds a -> Bounds a
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
forall a. Ord a => Eq (Bounds a)
forall a. Ord a => Bounds a -> Bounds a -> Bool
forall a. Ord a => Bounds a -> Bounds a -> Ordering
forall a. Ord a => Bounds a -> Bounds a -> Bounds a
$ccompare :: forall a. Ord a => Bounds a -> Bounds a -> Ordering
compare :: Bounds a -> Bounds a -> Ordering
$c< :: forall a. Ord a => Bounds a -> Bounds a -> Bool
< :: Bounds a -> Bounds a -> Bool
$c<= :: forall a. Ord a => Bounds a -> Bounds a -> Bool
<= :: Bounds a -> Bounds a -> Bool
$c> :: forall a. Ord a => Bounds a -> Bounds a -> Bool
> :: Bounds a -> Bounds a -> Bool
$c>= :: forall a. Ord a => Bounds a -> Bounds a -> Bool
>= :: Bounds a -> Bounds a -> Bool
$cmax :: forall a. Ord a => Bounds a -> Bounds a -> Bounds a
max :: Bounds a -> Bounds a -> Bounds a
$cmin :: forall a. Ord a => Bounds a -> Bounds a -> Bounds a
min :: Bounds a -> Bounds a -> Bounds a
Ord,
Int -> Bounds a -> ShowS
[Bounds a] -> ShowS
Bounds a -> String
(Int -> Bounds a -> ShowS)
-> (Bounds a -> String) -> ([Bounds a] -> ShowS) -> Show (Bounds a)
forall a. Show a => Int -> Bounds a -> ShowS
forall a. Show a => [Bounds a] -> ShowS
forall a. Show a => Bounds a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> Bounds a -> ShowS
showsPrec :: Int -> Bounds a -> ShowS
$cshow :: forall a. Show a => Bounds a -> String
show :: Bounds a -> String
$cshowList :: forall a. Show a => [Bounds a] -> ShowS
showList :: [Bounds a] -> ShowS
Show
)
deriving anyclass
(
Maybe (Bounds a)
Maybe (Bounds a) -> AnyLowerBounded (Bounds a)
forall a. Bounded a => Maybe (Bounds a)
forall a. Maybe a -> AnyLowerBounded a
$csomeLowerBound :: forall a. Bounded a => Maybe (Bounds a)
someLowerBound :: Maybe (Bounds a)
AnyLowerBounded,
Maybe (Bounds a)
Maybe (Bounds a) -> AnyUpperBounded (Bounds a)
forall a. Bounded a => Maybe (Bounds a)
forall a. Maybe a -> AnyUpperBounded a
$csomeUpperBound :: forall a. Bounded a => Maybe (Bounds a)
someUpperBound :: Maybe (Bounds a)
AnyUpperBounded,
Bounds a
Bounds a -> LowerBounded (Bounds a)
forall a. a -> LowerBounded a
forall a. Bounded a => Bounds a
$clowerBound :: forall a. Bounded a => Bounds a
lowerBound :: Bounds a
LowerBounded,
Bounds a
Bounds a -> UpperBounded (Bounds a)
forall a. a -> UpperBounded a
forall a. Bounded a => Bounds a
$cupperBound :: forall a. Bounded a => Bounds a
upperBound :: Bounds a
UpperBounded
)
instance AnyLowerBounded All
instance AnyUpperBounded All
instance LowerBounded All
instance UpperBounded All
instance LowerBounded Any
instance UpperBounded Any
instance AnyLowerBounded Any
instance AnyUpperBounded Any
instance AnyLowerBounded CBool
instance AnyUpperBounded CBool
instance LowerBounded CBool
instance UpperBounded CBool
instance AnyLowerBounded CChar
instance AnyUpperBounded CChar
instance LowerBounded CChar
instance UpperBounded CChar
instance AnyLowerBounded CInt
instance AnyUpperBounded CInt
instance LowerBounded CInt
instance UpperBounded CInt
instance AnyLowerBounded CIntMax
instance AnyUpperBounded CIntMax
instance LowerBounded CIntMax
instance UpperBounded CIntMax
instance AnyUpperBounded CIntPtr
instance AnyLowerBounded CIntPtr
instance UpperBounded CIntPtr
instance LowerBounded CIntPtr
instance AnyLowerBounded CLLong
instance AnyUpperBounded CLLong
instance LowerBounded CLLong
instance UpperBounded CLLong
instance AnyLowerBounded CLong
instance AnyUpperBounded CLong
instance LowerBounded CLong
instance UpperBounded CLong
instance AnyLowerBounded CPtrdiff
instance AnyUpperBounded CPtrdiff
instance LowerBounded CPtrdiff
instance UpperBounded CPtrdiff
instance AnyLowerBounded CSChar
instance AnyUpperBounded CSChar
instance LowerBounded CSChar
instance UpperBounded CSChar
instance AnyLowerBounded CShort
instance AnyUpperBounded CShort
instance LowerBounded CShort
instance UpperBounded CShort
instance AnyLowerBounded CSigAtomic
instance AnyUpperBounded CSigAtomic
instance LowerBounded CSigAtomic
instance UpperBounded CSigAtomic
instance AnyLowerBounded CSize
instance AnyUpperBounded CSize
instance LowerBounded CSize
instance UpperBounded CSize
instance AnyLowerBounded CUChar
instance AnyUpperBounded CUChar
instance LowerBounded CUChar
instance UpperBounded CUChar
instance AnyLowerBounded CUInt
instance AnyUpperBounded CUInt
instance LowerBounded CUInt
instance UpperBounded CUInt
instance AnyLowerBounded CUIntMax
instance AnyUpperBounded CUIntMax
instance LowerBounded CUIntMax
instance UpperBounded CUIntMax
instance AnyLowerBounded CUIntPtr
instance AnyUpperBounded CUIntPtr
instance LowerBounded CUIntPtr
instance UpperBounded CUIntPtr
instance AnyLowerBounded CULLong
instance AnyUpperBounded CULLong
instance LowerBounded CULLong
instance UpperBounded CULLong
instance AnyLowerBounded CULong
instance AnyUpperBounded CULong
instance LowerBounded CULong
instance UpperBounded CULong
instance AnyLowerBounded CUShort
instance AnyUpperBounded CUShort
instance LowerBounded CUShort
instance UpperBounded CUShort
instance AnyLowerBounded CWchar
instance AnyUpperBounded CWchar
instance LowerBounded CWchar
instance UpperBounded CWchar
instance AnyLowerBounded IntPtr
instance AnyUpperBounded IntPtr
instance LowerBounded IntPtr
instance UpperBounded IntPtr
instance AnyLowerBounded WordPtr
instance AnyUpperBounded WordPtr
instance LowerBounded WordPtr
instance UpperBounded WordPtr
instance AnyLowerBounded ByteOrder
instance AnyUpperBounded ByteOrder
instance LowerBounded ByteOrder
instance UpperBounded ByteOrder
instance AnyLowerBounded Associativity
instance AnyUpperBounded Associativity
instance LowerBounded Associativity
instance UpperBounded Associativity
instance AnyLowerBounded DecidedStrictness
instance AnyUpperBounded DecidedStrictness
instance LowerBounded DecidedStrictness
instance UpperBounded DecidedStrictness
instance AnyLowerBounded SourceStrictness
instance AnyUpperBounded SourceStrictness
instance LowerBounded SourceStrictness
instance UpperBounded SourceStrictness
instance AnyLowerBounded SourceUnpackedness
instance AnyUpperBounded SourceUnpackedness
instance LowerBounded SourceUnpackedness
instance UpperBounded SourceUnpackedness
instance AnyLowerBounded Int16
instance AnyUpperBounded Int16
instance LowerBounded Int16
instance UpperBounded Int16
instance AnyLowerBounded Int32
instance AnyUpperBounded Int32
instance LowerBounded Int32
instance UpperBounded Int32
instance AnyLowerBounded Int64
instance AnyUpperBounded Int64
instance LowerBounded Int64
instance UpperBounded Int64
instance AnyLowerBounded Int8
instance AnyUpperBounded Int8
instance LowerBounded Int8
instance UpperBounded Int8
instance AnyLowerBounded GeneralCategory
instance AnyUpperBounded GeneralCategory
instance LowerBounded GeneralCategory
instance UpperBounded GeneralCategory
instance AnyLowerBounded Word16
instance AnyUpperBounded Word16
instance LowerBounded Word16
instance UpperBounded Word16
instance AnyLowerBounded Word32
instance AnyUpperBounded Word32
instance LowerBounded Word32
instance UpperBounded Word32
instance AnyLowerBounded Word64
instance AnyUpperBounded Word64
instance LowerBounded Word64
instance UpperBounded Word64
instance AnyLowerBounded Word8
instance AnyUpperBounded Word8
instance LowerBounded Word8
instance UpperBounded Word8
#if !WINDOWS
instance AnyLowerBounded Posix.CBlkCnt
instance AnyUpperBounded Posix.CBlkCnt
instance LowerBounded Posix.CBlkCnt
instance UpperBounded Posix.CBlkCnt
instance AnyLowerBounded Posix.CBlkSize
instance AnyUpperBounded Posix.CBlkSize
instance LowerBounded Posix.CBlkSize
instance UpperBounded Posix.CBlkSize
instance AnyLowerBounded Posix.CClockId
instance AnyUpperBounded Posix.CClockId
instance LowerBounded Posix.CClockId
instance UpperBounded Posix.CClockId
instance AnyLowerBounded Posix.CDev
instance AnyUpperBounded Posix.CDev
instance LowerBounded Posix.CDev
instance UpperBounded Posix.CDev
instance AnyLowerBounded Posix.CFsBlkCnt
instance AnyUpperBounded Posix.CFsBlkCnt
instance LowerBounded Posix.CFsBlkCnt
instance UpperBounded Posix.CFsBlkCnt
instance AnyLowerBounded Posix.CFsFilCnt
instance AnyUpperBounded Posix.CFsFilCnt
instance LowerBounded Posix.CFsFilCnt
instance UpperBounded Posix.CFsFilCnt
instance AnyLowerBounded Posix.CGid
instance AnyUpperBounded Posix.CGid
instance LowerBounded Posix.CGid
instance UpperBounded Posix.CGid
instance AnyLowerBounded Posix.CId
instance AnyUpperBounded Posix.CId
instance LowerBounded Posix.CId
instance UpperBounded Posix.CId
instance AnyLowerBounded Posix.CIno
instance AnyUpperBounded Posix.CIno
instance LowerBounded Posix.CIno
instance UpperBounded Posix.CIno
instance AnyLowerBounded Posix.CKey
instance AnyUpperBounded Posix.CKey
instance LowerBounded Posix.CKey
instance UpperBounded Posix.CKey
instance AnyLowerBounded Posix.CMode
instance AnyUpperBounded Posix.CMode
instance LowerBounded Posix.CMode
instance UpperBounded Posix.CMode
instance AnyLowerBounded Posix.CNfds
instance AnyUpperBounded Posix.CNfds
instance LowerBounded Posix.CNfds
instance UpperBounded Posix.CNfds
instance AnyLowerBounded Posix.CNlink
instance AnyUpperBounded Posix.CNlink
instance LowerBounded Posix.CNlink
instance UpperBounded Posix.CNlink
instance AnyLowerBounded Posix.COff
instance AnyUpperBounded Posix.COff
instance LowerBounded Posix.COff
instance UpperBounded Posix.COff
instance AnyLowerBounded Posix.CPid
instance AnyUpperBounded Posix.CPid
instance LowerBounded Posix.CPid
instance UpperBounded Posix.CPid
instance AnyLowerBounded Posix.CRLim
instance AnyUpperBounded Posix.CRLim
instance LowerBounded Posix.CRLim
instance UpperBounded Posix.CRLim
instance AnyLowerBounded Posix.CSsize
instance AnyUpperBounded Posix.CSsize
instance LowerBounded Posix.CSsize
instance UpperBounded Posix.CSsize
instance AnyLowerBounded Posix.CTcflag
instance AnyUpperBounded Posix.CTcflag
instance LowerBounded Posix.CTcflag
instance UpperBounded Posix.CTcflag
instance AnyLowerBounded Posix.CUid
instance AnyUpperBounded Posix.CUid
instance LowerBounded Posix.CUid
instance UpperBounded Posix.CUid
#endif
instance AnyLowerBounded Posix.Fd
instance AnyUpperBounded Posix.Fd
instance LowerBounded Posix.Fd
instance UpperBounded Posix.Fd
instance AnyLowerBounded Ordering
instance AnyUpperBounded Ordering
instance LowerBounded Ordering
instance UpperBounded Ordering
instance AnyLowerBounded ()
instance AnyUpperBounded ()
instance LowerBounded ()
instance UpperBounded ()
instance AnyLowerBounded Bool
instance AnyUpperBounded Bool
instance LowerBounded Bool
instance UpperBounded Bool
instance AnyLowerBounded Char
instance AnyUpperBounded Char
instance LowerBounded Char
instance UpperBounded Char
instance AnyLowerBounded Int
instance AnyUpperBounded Int
instance LowerBounded Int
instance UpperBounded Int
#if MIN_VERSION_base(4, 16, 0)
instance AnyLowerBounded Levity
instance AnyUpperBounded Levity
instance LowerBounded Levity
instance UpperBounded Levity
#endif
instance AnyLowerBounded VecCount
instance AnyUpperBounded VecCount
instance LowerBounded VecCount
instance UpperBounded VecCount
instance AnyLowerBounded VecElem
instance AnyUpperBounded VecElem
instance LowerBounded VecElem
instance UpperBounded VecElem
instance AnyLowerBounded Word
instance AnyUpperBounded Word
instance LowerBounded Word
instance UpperBounded Word
#if MIN_VERSION_base(4, 16, 0)
instance LowerBounded a => AnyLowerBounded (And a)
instance UpperBounded a => AnyUpperBounded (And a)
deriving via a instance LowerBounded a => LowerBounded (And a)
deriving via a instance UpperBounded a => UpperBounded (And a)
instance LowerBounded a => AnyLowerBounded (Iff a)
instance UpperBounded a => AnyUpperBounded (Iff a)
deriving via a instance LowerBounded a => LowerBounded (Iff a)
deriving via a instance UpperBounded a => UpperBounded (Iff a)
instance LowerBounded a => AnyLowerBounded (Ior a)
instance UpperBounded a => AnyUpperBounded (Ior a)
deriving via a instance LowerBounded a => LowerBounded (Ior a)
deriving via a instance UpperBounded a => UpperBounded (Ior a)
instance LowerBounded a => AnyLowerBounded (Xor a)
instance UpperBounded a => AnyUpperBounded (Xor a)
deriving via a instance LowerBounded a => LowerBounded (Xor a)
deriving via a instance UpperBounded a => UpperBounded (Xor a)
#endif
instance (LowerBounded a) => AnyLowerBounded (Identity a)
instance (UpperBounded a) => AnyUpperBounded (Identity a)
deriving via a instance (LowerBounded a) => LowerBounded (Identity a)
deriving via a instance (UpperBounded a) => UpperBounded (Identity a)
#if !MIN_VERSION_base(4, 15, 0)
instance (LowerBounded a) => AnyLowerBounded (Down a)
instance (UpperBounded a) => AnyUpperBounded (Down a)
deriving via a instance LowerBounded a => LowerBounded (Down a)
deriving via a instance UpperBounded a => UpperBounded (Down a)
#else
instance (UpperBounded a) => AnyLowerBounded (Down a)
instance (LowerBounded a) => AnyUpperBounded (Down a)
instance UpperBounded a => LowerBounded (Down a) where
lowerBound :: Down a
lowerBound = a -> Down a
forall a. a -> Down a
Down a
forall a. UpperBounded a => a
upperBound
{-# INLINE lowerBound #-}
instance LowerBounded a => UpperBounded (Down a) where
upperBound :: Down a
upperBound = a -> Down a
forall a. a -> Down a
Down a
forall a. LowerBounded a => a
lowerBound
{-# INLINE upperBound #-}
#endif
instance (LowerBounded a) => AnyLowerBounded (First a)
instance (UpperBounded a) => AnyUpperBounded (First a)
deriving via a instance (LowerBounded a) => LowerBounded (First a)
deriving via a instance (UpperBounded a) => UpperBounded (First a)
instance (LowerBounded a) => AnyLowerBounded (Last a)
instance (UpperBounded a) => AnyUpperBounded (Last a)
deriving via a instance (LowerBounded a) => LowerBounded (Last a)
deriving via a instance (UpperBounded a) => UpperBounded (Last a)
instance (LowerBounded a) => AnyLowerBounded (Max a)
instance (UpperBounded a) => AnyUpperBounded (Max a)
deriving via a instance (LowerBounded a) => LowerBounded (Max a)
deriving via a instance (UpperBounded a) => UpperBounded (Max a)
instance (LowerBounded a) => AnyLowerBounded (Min a)
instance (UpperBounded a) => AnyUpperBounded (Min a)
deriving via a instance (LowerBounded a) => LowerBounded (Min a)
deriving via a instance (UpperBounded a) => UpperBounded (Min a)
instance (LowerBounded a) => AnyLowerBounded (WrappedMonoid a)
instance (UpperBounded a) => AnyUpperBounded (WrappedMonoid a)
deriving via a instance (LowerBounded a) => LowerBounded (WrappedMonoid a)
deriving via a instance (UpperBounded a) => UpperBounded (WrappedMonoid a)
instance (LowerBounded a) => AnyLowerBounded (Dual a)
instance (UpperBounded a) => AnyUpperBounded (Dual a)
deriving via a instance (LowerBounded a) => LowerBounded (Dual a)
deriving via a instance (UpperBounded a) => UpperBounded (Dual a)
instance (LowerBounded a) => AnyLowerBounded (Product a)
instance (UpperBounded a) => AnyUpperBounded (Product a)
deriving via a instance (LowerBounded a) => LowerBounded (Product a)
deriving via a instance (UpperBounded a) => UpperBounded (Product a)
instance (LowerBounded a) => AnyLowerBounded (Sum a)
instance (UpperBounded a) => AnyUpperBounded (Sum a)
deriving via a instance (LowerBounded a) => LowerBounded (Sum a)
deriving via a instance (UpperBounded a) => UpperBounded (Sum a)
#if MIN_VERSION_base(4, 18, 0)
instance (LowerBounded a) => AnyLowerBounded (Solo a)
instance (UpperBounded a) => AnyUpperBounded (Solo a)
instance LowerBounded a => LowerBounded (Solo a) where
lowerBound :: Solo a
lowerBound = a -> Solo a
forall a. a -> Solo a
MkSolo a
forall a. LowerBounded a => a
lowerBound
{-# INLINE lowerBound #-}
instance UpperBounded a => UpperBounded (Solo a) where
upperBound :: Solo a
upperBound = a -> Solo a
forall a. a -> Solo a
MkSolo a
forall a. UpperBounded a => a
upperBound
{-# INLINE upperBound #-}
#elif MIN_VERSION_base(4, 16, 0)
instance (LowerBounded a) => AnyLowerBounded (Solo a)
instance (UpperBounded a) => AnyUpperBounded (Solo a)
instance LowerBounded a => LowerBounded (Solo a) where
lowerBound = Solo lowerBound
{-# INLINE lowerBound #-}
instance UpperBounded a => UpperBounded (Solo a) where
upperBound = Solo upperBound
{-# INLINE upperBound #-}
#endif
instance LowerBounded (Proxy t)
instance UpperBounded (Proxy t)
instance AnyLowerBounded (Proxy t)
instance AnyUpperBounded (Proxy t)
instance (LowerBounded a, LowerBounded b) => AnyLowerBounded (a, b)
instance (UpperBounded a, UpperBounded b) => AnyUpperBounded (a, b)
instance (LowerBounded a, LowerBounded b) => LowerBounded (a, b) where
lowerBound :: (a, b)
lowerBound = (a
forall a. LowerBounded a => a
lowerBound, b
forall a. LowerBounded a => a
lowerBound)
{-# INLINE lowerBound #-}
instance (UpperBounded a, UpperBounded b) => UpperBounded (a, b) where
upperBound :: (a, b)
upperBound = (a
forall a. UpperBounded a => a
upperBound, b
forall a. UpperBounded a => a
upperBound)
{-# INLINE upperBound #-}
instance (LowerBounded a) => AnyLowerBounded (Const a b)
instance (UpperBounded a) => AnyUpperBounded (Const a b)
deriving via a instance (LowerBounded a) => LowerBounded (Const a b)
deriving via a instance (UpperBounded a) => UpperBounded (Const a b)
instance (Applicative f, LowerBounded a) => AnyLowerBounded (Ap f a)
instance (Applicative f, UpperBounded a) => AnyUpperBounded (Ap f a)
instance (Applicative f, LowerBounded a) => LowerBounded (Ap f a) where
lowerBound :: Ap f a
lowerBound = f a -> Ap f a
forall {k} (f :: k -> *) (a :: k). f a -> Ap f a
Ap (a -> f a
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure a
forall a. LowerBounded a => a
lowerBound)
{-# INLINE lowerBound #-}
instance (Applicative f, UpperBounded a) => UpperBounded (Ap f a) where
upperBound :: Ap f a
upperBound = f a -> Ap f a
forall {k} (f :: k -> *) (a :: k). f a -> Ap f a
Ap (a -> f a
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure a
forall a. UpperBounded a => a
upperBound)
{-# INLINE upperBound #-}
instance (Coercible a b) => AnyLowerBounded (Coercion a b)
instance (Coercible a b) => AnyUpperBounded (Coercion a b)
instance (Coercible a b) => LowerBounded (Coercion a b)
instance (Coercible a b) => UpperBounded (Coercion a b)
instance (a ~ b) => AnyLowerBounded (a :~: b)
instance (a ~ b) => AnyUpperBounded (a :~: b)
instance (a ~ b) => LowerBounded (a :~: b) where
lowerBound :: a :~: b
lowerBound = a :~: a
a :~: b
forall {k} (a :: k). a :~: a
Refl
{-# INLINE lowerBound #-}
instance (a ~ b) => UpperBounded (a :~: b) where
upperBound :: a :~: b
upperBound = a :~: a
a :~: b
forall {k} (a :: k). a :~: a
Refl
{-# INLINE upperBound #-}
instance (a ~~ b) => AnyLowerBounded (a :~~: b)
instance (a ~~ b) => AnyUpperBounded (a :~~: b)
instance (a ~~ b) => LowerBounded (a :~~: b) where
lowerBound :: a :~~: b
lowerBound = a :~~: a
a :~~: b
forall {k1} (a :: k1). a :~~: a
HRefl
{-# INLINE lowerBound #-}
instance (a ~~ b) => UpperBounded (a :~~: b) where
upperBound :: a :~~: b
upperBound = a :~~: a
a :~~: b
forall {k1} (a :: k1). a :~~: a
HRefl
{-# INLINE upperBound #-}
instance (LowerBounded a, LowerBounded b, LowerBounded c) => AnyLowerBounded (a, b, c)
instance (UpperBounded a, UpperBounded b, UpperBounded c) => AnyUpperBounded (a, b, c)
instance (LowerBounded a, LowerBounded b, LowerBounded c) => LowerBounded (a, b, c) where
lowerBound :: (a, b, c)
lowerBound = (a
forall a. LowerBounded a => a
lowerBound, b
forall a. LowerBounded a => a
lowerBound, c
forall a. LowerBounded a => a
lowerBound)
{-# INLINE lowerBound #-}
instance (UpperBounded a, UpperBounded b, UpperBounded c) => UpperBounded (a, b, c) where
upperBound :: (a, b, c)
upperBound = (a
forall a. UpperBounded a => a
upperBound, b
forall a. UpperBounded a => a
upperBound, c
forall a. UpperBounded a => a
upperBound)
{-# INLINE upperBound #-}
instance
( LowerBounded a,
LowerBounded b,
LowerBounded c,
LowerBounded d
) =>
AnyLowerBounded (a, b, c, d)
instance
( UpperBounded a,
UpperBounded b,
UpperBounded c,
UpperBounded d
) =>
AnyUpperBounded (a, b, c, d)
instance
( LowerBounded a,
LowerBounded b,
LowerBounded c,
LowerBounded d
) =>
LowerBounded (a, b, c, d)
where
lowerBound :: (a, b, c, d)
lowerBound = (a
forall a. LowerBounded a => a
lowerBound, b
forall a. LowerBounded a => a
lowerBound, c
forall a. LowerBounded a => a
lowerBound, d
forall a. LowerBounded a => a
lowerBound)
{-# INLINE lowerBound #-}
instance
( UpperBounded a,
UpperBounded b,
UpperBounded c,
UpperBounded d
) =>
UpperBounded (a, b, c, d)
where
upperBound :: (a, b, c, d)
upperBound = (a
forall a. UpperBounded a => a
upperBound, b
forall a. UpperBounded a => a
upperBound, c
forall a. UpperBounded a => a
upperBound, d
forall a. UpperBounded a => a
upperBound)
{-# INLINE upperBound #-}
instance
( LowerBounded a,
LowerBounded b,
LowerBounded c,
LowerBounded d,
LowerBounded e
) =>
AnyLowerBounded (a, b, c, d, e)
instance
( UpperBounded a,
UpperBounded b,
UpperBounded c,
UpperBounded d,
UpperBounded e
) =>
AnyUpperBounded (a, b, c, d, e)
instance
( LowerBounded a,
LowerBounded b,
LowerBounded c,
LowerBounded d,
LowerBounded e
) =>
LowerBounded (a, b, c, d, e)
where
lowerBound :: (a, b, c, d, e)
lowerBound = (a
forall a. LowerBounded a => a
lowerBound, b
forall a. LowerBounded a => a
lowerBound, c
forall a. LowerBounded a => a
lowerBound, d
forall a. LowerBounded a => a
lowerBound, e
forall a. LowerBounded a => a
lowerBound)
{-# INLINE lowerBound #-}
instance
( UpperBounded a,
UpperBounded b,
UpperBounded c,
UpperBounded d,
UpperBounded e
) =>
UpperBounded (a, b, c, d, e)
where
upperBound :: (a, b, c, d, e)
upperBound = (a
forall a. UpperBounded a => a
upperBound, b
forall a. UpperBounded a => a
upperBound, c
forall a. UpperBounded a => a
upperBound, d
forall a. UpperBounded a => a
upperBound, e
forall a. UpperBounded a => a
upperBound)
{-# INLINE upperBound #-}
instance
( LowerBounded a,
LowerBounded b,
LowerBounded c,
LowerBounded d,
LowerBounded e,
LowerBounded f
) =>
AnyLowerBounded (a, b, c, d, e, f)
instance
( UpperBounded a,
UpperBounded b,
UpperBounded c,
UpperBounded d,
UpperBounded e,
UpperBounded f
) =>
AnyUpperBounded (a, b, c, d, e, f)
instance
( LowerBounded a,
LowerBounded b,
LowerBounded c,
LowerBounded d,
LowerBounded e,
LowerBounded f
) =>
LowerBounded (a, b, c, d, e, f)
where
lowerBound :: (a, b, c, d, e, f)
lowerBound =
( a
forall a. LowerBounded a => a
lowerBound,
b
forall a. LowerBounded a => a
lowerBound,
c
forall a. LowerBounded a => a
lowerBound,
d
forall a. LowerBounded a => a
lowerBound,
e
forall a. LowerBounded a => a
lowerBound,
f
forall a. LowerBounded a => a
lowerBound
)
{-# INLINE lowerBound #-}
instance
( UpperBounded a,
UpperBounded b,
UpperBounded c,
UpperBounded d,
UpperBounded e,
UpperBounded f
) =>
UpperBounded (a, b, c, d, e, f)
where
upperBound :: (a, b, c, d, e, f)
upperBound =
( a
forall a. UpperBounded a => a
upperBound,
b
forall a. UpperBounded a => a
upperBound,
c
forall a. UpperBounded a => a
upperBound,
d
forall a. UpperBounded a => a
upperBound,
e
forall a. UpperBounded a => a
upperBound,
f
forall a. UpperBounded a => a
upperBound
)
{-# INLINE upperBound #-}
instance
( LowerBounded a,
LowerBounded b,
LowerBounded c,
LowerBounded d,
LowerBounded e,
LowerBounded f,
LowerBounded g
) =>
AnyLowerBounded (a, b, c, d, e, f, g)
instance
( UpperBounded a,
UpperBounded b,
UpperBounded c,
UpperBounded d,
UpperBounded e,
UpperBounded f,
UpperBounded g
) =>
AnyUpperBounded (a, b, c, d, e, f, g)
instance
( LowerBounded a,
LowerBounded b,
LowerBounded c,
LowerBounded d,
LowerBounded e,
LowerBounded f,
LowerBounded g
) =>
LowerBounded (a, b, c, d, e, f, g)
where
lowerBound :: (a, b, c, d, e, f, g)
lowerBound =
( a
forall a. LowerBounded a => a
lowerBound,
b
forall a. LowerBounded a => a
lowerBound,
c
forall a. LowerBounded a => a
lowerBound,
d
forall a. LowerBounded a => a
lowerBound,
e
forall a. LowerBounded a => a
lowerBound,
f
forall a. LowerBounded a => a
lowerBound,
g
forall a. LowerBounded a => a
lowerBound
)
{-# INLINE lowerBound #-}
instance
( UpperBounded a,
UpperBounded b,
UpperBounded c,
UpperBounded d,
UpperBounded e,
UpperBounded f,
UpperBounded g
) =>
UpperBounded (a, b, c, d, e, f, g)
where
upperBound :: (a, b, c, d, e, f, g)
upperBound =
( a
forall a. UpperBounded a => a
upperBound,
b
forall a. UpperBounded a => a
upperBound,
c
forall a. UpperBounded a => a
upperBound,
d
forall a. UpperBounded a => a
upperBound,
e
forall a. UpperBounded a => a
upperBound,
f
forall a. UpperBounded a => a
upperBound,
g
forall a. UpperBounded a => a
upperBound
)
{-# INLINE upperBound #-}
instance
( LowerBounded a,
LowerBounded b,
LowerBounded c,
LowerBounded d,
LowerBounded e,
LowerBounded f,
LowerBounded g,
LowerBounded h
) =>
AnyLowerBounded (a, b, c, d, e, f, g, h)
instance
( UpperBounded a,
UpperBounded b,
UpperBounded c,
UpperBounded d,
UpperBounded e,
UpperBounded f,
UpperBounded g,
UpperBounded h
) =>
AnyUpperBounded (a, b, c, d, e, f, g, h)
instance
( LowerBounded a,
LowerBounded b,
LowerBounded c,
LowerBounded d,
LowerBounded e,
LowerBounded f,
LowerBounded g,
LowerBounded h
) =>
LowerBounded (a, b, c, d, e, f, g, h)
where
lowerBound :: (a, b, c, d, e, f, g, h)
lowerBound =
( a
forall a. LowerBounded a => a
lowerBound,
b
forall a. LowerBounded a => a
lowerBound,
c
forall a. LowerBounded a => a
lowerBound,
d
forall a. LowerBounded a => a
lowerBound,
e
forall a. LowerBounded a => a
lowerBound,
f
forall a. LowerBounded a => a
lowerBound,
g
forall a. LowerBounded a => a
lowerBound,
h
forall a. LowerBounded a => a
lowerBound
)
{-# INLINE lowerBound #-}
instance
( UpperBounded a,
UpperBounded b,
UpperBounded c,
UpperBounded d,
UpperBounded e,
UpperBounded f,
UpperBounded g,
UpperBounded h
) =>
UpperBounded (a, b, c, d, e, f, g, h)
where
upperBound :: (a, b, c, d, e, f, g, h)
upperBound =
( a
forall a. UpperBounded a => a
upperBound,
b
forall a. UpperBounded a => a
upperBound,
c
forall a. UpperBounded a => a
upperBound,
d
forall a. UpperBounded a => a
upperBound,
e
forall a. UpperBounded a => a
upperBound,
f
forall a. UpperBounded a => a
upperBound,
g
forall a. UpperBounded a => a
upperBound,
h
forall a. UpperBounded a => a
upperBound
)
{-# INLINE upperBound #-}
instance
( LowerBounded a,
LowerBounded b,
LowerBounded c,
LowerBounded d,
LowerBounded e,
LowerBounded f,
LowerBounded g,
LowerBounded h,
LowerBounded i
) =>
AnyLowerBounded (a, b, c, d, e, f, g, h, i)
instance
( UpperBounded a,
UpperBounded b,
UpperBounded c,
UpperBounded d,
UpperBounded e,
UpperBounded f,
UpperBounded g,
UpperBounded h,
UpperBounded i
) =>
AnyUpperBounded (a, b, c, d, e, f, g, h, i)
instance
( LowerBounded a,
LowerBounded b,
LowerBounded c,
LowerBounded d,
LowerBounded e,
LowerBounded f,
LowerBounded g,
LowerBounded h,
LowerBounded i
) =>
LowerBounded (a, b, c, d, e, f, g, h, i)
where
lowerBound :: (a, b, c, d, e, f, g, h, i)
lowerBound =
( a
forall a. LowerBounded a => a
lowerBound,
b
forall a. LowerBounded a => a
lowerBound,
c
forall a. LowerBounded a => a
lowerBound,
d
forall a. LowerBounded a => a
lowerBound,
e
forall a. LowerBounded a => a
lowerBound,
f
forall a. LowerBounded a => a
lowerBound,
g
forall a. LowerBounded a => a
lowerBound,
h
forall a. LowerBounded a => a
lowerBound,
i
forall a. LowerBounded a => a
lowerBound
)
{-# INLINE lowerBound #-}
instance
( UpperBounded a,
UpperBounded b,
UpperBounded c,
UpperBounded d,
UpperBounded e,
UpperBounded f,
UpperBounded g,
UpperBounded h,
UpperBounded i
) =>
UpperBounded (a, b, c, d, e, f, g, h, i)
where
upperBound :: (a, b, c, d, e, f, g, h, i)
upperBound =
( a
forall a. UpperBounded a => a
upperBound,
b
forall a. UpperBounded a => a
upperBound,
c
forall a. UpperBounded a => a
upperBound,
d
forall a. UpperBounded a => a
upperBound,
e
forall a. UpperBounded a => a
upperBound,
f
forall a. UpperBounded a => a
upperBound,
g
forall a. UpperBounded a => a
upperBound,
h
forall a. UpperBounded a => a
upperBound,
i
forall a. UpperBounded a => a
upperBound
)
{-# INLINE upperBound #-}
instance
( LowerBounded a,
LowerBounded b,
LowerBounded c,
LowerBounded d,
LowerBounded e,
LowerBounded f,
LowerBounded g,
LowerBounded h,
LowerBounded i,
LowerBounded j
) =>
AnyLowerBounded (a, b, c, d, e, f, g, h, i, j)
instance
( UpperBounded a,
UpperBounded b,
UpperBounded c,
UpperBounded d,
UpperBounded e,
UpperBounded f,
UpperBounded g,
UpperBounded h,
UpperBounded i,
UpperBounded j
) =>
AnyUpperBounded (a, b, c, d, e, f, g, h, i, j)
instance
( LowerBounded a,
LowerBounded b,
LowerBounded c,
LowerBounded d,
LowerBounded e,
LowerBounded f,
LowerBounded g,
LowerBounded h,
LowerBounded i,
LowerBounded j
) =>
LowerBounded (a, b, c, d, e, f, g, h, i, j)
where
lowerBound :: (a, b, c, d, e, f, g, h, i, j)
lowerBound =
( a
forall a. LowerBounded a => a
lowerBound,
b
forall a. LowerBounded a => a
lowerBound,
c
forall a. LowerBounded a => a
lowerBound,
d
forall a. LowerBounded a => a
lowerBound,
e
forall a. LowerBounded a => a
lowerBound,
f
forall a. LowerBounded a => a
lowerBound,
g
forall a. LowerBounded a => a
lowerBound,
h
forall a. LowerBounded a => a
lowerBound,
i
forall a. LowerBounded a => a
lowerBound,
j
forall a. LowerBounded a => a
lowerBound
)
{-# INLINE lowerBound #-}
instance
( UpperBounded a,
UpperBounded b,
UpperBounded c,
UpperBounded d,
UpperBounded e,
UpperBounded f,
UpperBounded g,
UpperBounded h,
UpperBounded i,
UpperBounded j
) =>
UpperBounded (a, b, c, d, e, f, g, h, i, j)
where
upperBound :: (a, b, c, d, e, f, g, h, i, j)
upperBound =
( a
forall a. UpperBounded a => a
upperBound,
b
forall a. UpperBounded a => a
upperBound,
c
forall a. UpperBounded a => a
upperBound,
d
forall a. UpperBounded a => a
upperBound,
e
forall a. UpperBounded a => a
upperBound,
f
forall a. UpperBounded a => a
upperBound,
g
forall a. UpperBounded a => a
upperBound,
h
forall a. UpperBounded a => a
upperBound,
i
forall a. UpperBounded a => a
upperBound,
j
forall a. UpperBounded a => a
upperBound
)
{-# INLINE upperBound #-}
instance
( LowerBounded a,
LowerBounded b,
LowerBounded c,
LowerBounded d,
LowerBounded e,
LowerBounded f,
LowerBounded g,
LowerBounded h,
LowerBounded i,
LowerBounded j,
LowerBounded k
) =>
AnyLowerBounded (a, b, c, d, e, f, g, h, i, j, k)
instance
( UpperBounded a,
UpperBounded b,
UpperBounded c,
UpperBounded d,
UpperBounded e,
UpperBounded f,
UpperBounded g,
UpperBounded h,
UpperBounded i,
UpperBounded j,
UpperBounded k
) =>
AnyUpperBounded (a, b, c, d, e, f, g, h, i, j, k)
instance
( LowerBounded a,
LowerBounded b,
LowerBounded c,
LowerBounded d,
LowerBounded e,
LowerBounded f,
LowerBounded g,
LowerBounded h,
LowerBounded i,
LowerBounded j,
LowerBounded k
) =>
LowerBounded (a, b, c, d, e, f, g, h, i, j, k)
where
lowerBound :: (a, b, c, d, e, f, g, h, i, j, k)
lowerBound =
( a
forall a. LowerBounded a => a
lowerBound,
b
forall a. LowerBounded a => a
lowerBound,
c
forall a. LowerBounded a => a
lowerBound,
d
forall a. LowerBounded a => a
lowerBound,
e
forall a. LowerBounded a => a
lowerBound,
f
forall a. LowerBounded a => a
lowerBound,
g
forall a. LowerBounded a => a
lowerBound,
h
forall a. LowerBounded a => a
lowerBound,
i
forall a. LowerBounded a => a
lowerBound,
j
forall a. LowerBounded a => a
lowerBound,
k
forall a. LowerBounded a => a
lowerBound
)
{-# INLINE lowerBound #-}
instance
( UpperBounded a,
UpperBounded b,
UpperBounded c,
UpperBounded d,
UpperBounded e,
UpperBounded f,
UpperBounded g,
UpperBounded h,
UpperBounded i,
UpperBounded j,
UpperBounded k
) =>
UpperBounded (a, b, c, d, e, f, g, h, i, j, k)
where
upperBound :: (a, b, c, d, e, f, g, h, i, j, k)
upperBound =
( a
forall a. UpperBounded a => a
upperBound,
b
forall a. UpperBounded a => a
upperBound,
c
forall a. UpperBounded a => a
upperBound,
d
forall a. UpperBounded a => a
upperBound,
e
forall a. UpperBounded a => a
upperBound,
f
forall a. UpperBounded a => a
upperBound,
g
forall a. UpperBounded a => a
upperBound,
h
forall a. UpperBounded a => a
upperBound,
i
forall a. UpperBounded a => a
upperBound,
j
forall a. UpperBounded a => a
upperBound,
k
forall a. UpperBounded a => a
upperBound
)
{-# INLINE upperBound #-}
instance
( LowerBounded a,
LowerBounded b,
LowerBounded c,
LowerBounded d,
LowerBounded e,
LowerBounded f,
LowerBounded g,
LowerBounded h,
LowerBounded i,
LowerBounded j,
LowerBounded k,
LowerBounded l
) =>
AnyLowerBounded (a, b, c, d, e, f, g, h, i, j, k, l)
instance
( UpperBounded a,
UpperBounded b,
UpperBounded c,
UpperBounded d,
UpperBounded e,
UpperBounded f,
UpperBounded g,
UpperBounded h,
UpperBounded i,
UpperBounded j,
UpperBounded k,
UpperBounded l
) =>
AnyUpperBounded (a, b, c, d, e, f, g, h, i, j, k, l)
instance
( LowerBounded a,
LowerBounded b,
LowerBounded c,
LowerBounded d,
LowerBounded e,
LowerBounded f,
LowerBounded g,
LowerBounded h,
LowerBounded i,
LowerBounded j,
LowerBounded k,
LowerBounded l
) =>
LowerBounded (a, b, c, d, e, f, g, h, i, j, k, l)
where
lowerBound :: (a, b, c, d, e, f, g, h, i, j, k, l)
lowerBound =
( a
forall a. LowerBounded a => a
lowerBound,
b
forall a. LowerBounded a => a
lowerBound,
c
forall a. LowerBounded a => a
lowerBound,
d
forall a. LowerBounded a => a
lowerBound,
e
forall a. LowerBounded a => a
lowerBound,
f
forall a. LowerBounded a => a
lowerBound,
g
forall a. LowerBounded a => a
lowerBound,
h
forall a. LowerBounded a => a
lowerBound,
i
forall a. LowerBounded a => a
lowerBound,
j
forall a. LowerBounded a => a
lowerBound,
k
forall a. LowerBounded a => a
lowerBound,
l
forall a. LowerBounded a => a
lowerBound
)
{-# INLINE lowerBound #-}
instance
( UpperBounded a,
UpperBounded b,
UpperBounded c,
UpperBounded d,
UpperBounded e,
UpperBounded f,
UpperBounded g,
UpperBounded h,
UpperBounded i,
UpperBounded j,
UpperBounded k,
UpperBounded l
) =>
UpperBounded (a, b, c, d, e, f, g, h, i, j, k, l)
where
upperBound :: (a, b, c, d, e, f, g, h, i, j, k, l)
upperBound =
( a
forall a. UpperBounded a => a
upperBound,
b
forall a. UpperBounded a => a
upperBound,
c
forall a. UpperBounded a => a
upperBound,
d
forall a. UpperBounded a => a
upperBound,
e
forall a. UpperBounded a => a
upperBound,
f
forall a. UpperBounded a => a
upperBound,
g
forall a. UpperBounded a => a
upperBound,
h
forall a. UpperBounded a => a
upperBound,
i
forall a. UpperBounded a => a
upperBound,
j
forall a. UpperBounded a => a
upperBound,
k
forall a. UpperBounded a => a
upperBound,
l
forall a. UpperBounded a => a
upperBound
)
{-# INLINE upperBound #-}
instance
( LowerBounded a,
LowerBounded b,
LowerBounded c,
LowerBounded d,
LowerBounded e,
LowerBounded f,
LowerBounded g,
LowerBounded h,
LowerBounded i,
LowerBounded j,
LowerBounded k,
LowerBounded l,
LowerBounded m
) =>
AnyLowerBounded (a, b, c, d, e, f, g, h, i, j, k, l, m)
instance
( UpperBounded a,
UpperBounded b,
UpperBounded c,
UpperBounded d,
UpperBounded e,
UpperBounded f,
UpperBounded g,
UpperBounded h,
UpperBounded i,
UpperBounded j,
UpperBounded k,
UpperBounded l,
UpperBounded m
) =>
AnyUpperBounded (a, b, c, d, e, f, g, h, i, j, k, l, m)
instance
( LowerBounded a,
LowerBounded b,
LowerBounded c,
LowerBounded d,
LowerBounded e,
LowerBounded f,
LowerBounded g,
LowerBounded h,
LowerBounded i,
LowerBounded j,
LowerBounded k,
LowerBounded l,
LowerBounded m
) =>
LowerBounded (a, b, c, d, e, f, g, h, i, j, k, l, m)
where
lowerBound :: (a, b, c, d, e, f, g, h, i, j, k, l, m)
lowerBound =
( a
forall a. LowerBounded a => a
lowerBound,
b
forall a. LowerBounded a => a
lowerBound,
c
forall a. LowerBounded a => a
lowerBound,
d
forall a. LowerBounded a => a
lowerBound,
e
forall a. LowerBounded a => a
lowerBound,
f
forall a. LowerBounded a => a
lowerBound,
g
forall a. LowerBounded a => a
lowerBound,
h
forall a. LowerBounded a => a
lowerBound,
i
forall a. LowerBounded a => a
lowerBound,
j
forall a. LowerBounded a => a
lowerBound,
k
forall a. LowerBounded a => a
lowerBound,
l
forall a. LowerBounded a => a
lowerBound,
m
forall a. LowerBounded a => a
lowerBound
)
{-# INLINE lowerBound #-}
instance
( UpperBounded a,
UpperBounded b,
UpperBounded c,
UpperBounded d,
UpperBounded e,
UpperBounded f,
UpperBounded g,
UpperBounded h,
UpperBounded i,
UpperBounded j,
UpperBounded k,
UpperBounded l,
UpperBounded m
) =>
UpperBounded (a, b, c, d, e, f, g, h, i, j, k, l, m)
where
upperBound :: (a, b, c, d, e, f, g, h, i, j, k, l, m)
upperBound =
( a
forall a. UpperBounded a => a
upperBound,
b
forall a. UpperBounded a => a
upperBound,
c
forall a. UpperBounded a => a
upperBound,
d
forall a. UpperBounded a => a
upperBound,
e
forall a. UpperBounded a => a
upperBound,
f
forall a. UpperBounded a => a
upperBound,
g
forall a. UpperBounded a => a
upperBound,
h
forall a. UpperBounded a => a
upperBound,
i
forall a. UpperBounded a => a
upperBound,
j
forall a. UpperBounded a => a
upperBound,
k
forall a. UpperBounded a => a
upperBound,
l
forall a. UpperBounded a => a
upperBound,
m
forall a. UpperBounded a => a
upperBound
)
{-# INLINE upperBound #-}
instance
( LowerBounded a,
LowerBounded b,
LowerBounded c,
LowerBounded d,
LowerBounded e,
LowerBounded f,
LowerBounded g,
LowerBounded h,
LowerBounded i,
LowerBounded j,
LowerBounded k,
LowerBounded l,
LowerBounded m,
LowerBounded n
) =>
AnyLowerBounded (a, b, c, d, e, f, g, h, i, j, k, l, m, n)
instance
( UpperBounded a,
UpperBounded b,
UpperBounded c,
UpperBounded d,
UpperBounded e,
UpperBounded f,
UpperBounded g,
UpperBounded h,
UpperBounded i,
UpperBounded j,
UpperBounded k,
UpperBounded l,
UpperBounded m,
UpperBounded n
) =>
AnyUpperBounded (a, b, c, d, e, f, g, h, i, j, k, l, m, n)
instance
( LowerBounded a,
LowerBounded b,
LowerBounded c,
LowerBounded d,
LowerBounded e,
LowerBounded f,
LowerBounded g,
LowerBounded h,
LowerBounded i,
LowerBounded j,
LowerBounded k,
LowerBounded l,
LowerBounded m,
LowerBounded n
) =>
LowerBounded (a, b, c, d, e, f, g, h, i, j, k, l, m, n)
where
lowerBound :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n)
lowerBound =
( a
forall a. LowerBounded a => a
lowerBound,
b
forall a. LowerBounded a => a
lowerBound,
c
forall a. LowerBounded a => a
lowerBound,
d
forall a. LowerBounded a => a
lowerBound,
e
forall a. LowerBounded a => a
lowerBound,
f
forall a. LowerBounded a => a
lowerBound,
g
forall a. LowerBounded a => a
lowerBound,
h
forall a. LowerBounded a => a
lowerBound,
i
forall a. LowerBounded a => a
lowerBound,
j
forall a. LowerBounded a => a
lowerBound,
k
forall a. LowerBounded a => a
lowerBound,
l
forall a. LowerBounded a => a
lowerBound,
m
forall a. LowerBounded a => a
lowerBound,
n
forall a. LowerBounded a => a
lowerBound
)
{-# INLINE lowerBound #-}
instance
( UpperBounded a,
UpperBounded b,
UpperBounded c,
UpperBounded d,
UpperBounded e,
UpperBounded f,
UpperBounded g,
UpperBounded h,
UpperBounded i,
UpperBounded j,
UpperBounded k,
UpperBounded l,
UpperBounded m,
UpperBounded n
) =>
UpperBounded (a, b, c, d, e, f, g, h, i, j, k, l, m, n)
where
upperBound :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n)
upperBound =
( a
forall a. UpperBounded a => a
upperBound,
b
forall a. UpperBounded a => a
upperBound,
c
forall a. UpperBounded a => a
upperBound,
d
forall a. UpperBounded a => a
upperBound,
e
forall a. UpperBounded a => a
upperBound,
f
forall a. UpperBounded a => a
upperBound,
g
forall a. UpperBounded a => a
upperBound,
h
forall a. UpperBounded a => a
upperBound,
i
forall a. UpperBounded a => a
upperBound,
j
forall a. UpperBounded a => a
upperBound,
k
forall a. UpperBounded a => a
upperBound,
l
forall a. UpperBounded a => a
upperBound,
m
forall a. UpperBounded a => a
upperBound,
n
forall a. UpperBounded a => a
upperBound
)
{-# INLINE upperBound #-}
instance
( LowerBounded a,
LowerBounded b,
LowerBounded c,
LowerBounded d,
LowerBounded e,
LowerBounded f,
LowerBounded g,
LowerBounded h,
LowerBounded i,
LowerBounded j,
LowerBounded k,
LowerBounded l,
LowerBounded m,
LowerBounded n,
LowerBounded o
) =>
AnyLowerBounded (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
instance
( UpperBounded a,
UpperBounded b,
UpperBounded c,
UpperBounded d,
UpperBounded e,
UpperBounded f,
UpperBounded g,
UpperBounded h,
UpperBounded i,
UpperBounded j,
UpperBounded k,
UpperBounded l,
UpperBounded m,
UpperBounded n,
UpperBounded o
) =>
AnyUpperBounded (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
instance
( LowerBounded a,
LowerBounded b,
LowerBounded c,
LowerBounded d,
LowerBounded e,
LowerBounded f,
LowerBounded g,
LowerBounded h,
LowerBounded i,
LowerBounded j,
LowerBounded k,
LowerBounded l,
LowerBounded m,
LowerBounded n,
LowerBounded o
) =>
LowerBounded (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
where
lowerBound :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
lowerBound =
( a
forall a. LowerBounded a => a
lowerBound,
b
forall a. LowerBounded a => a
lowerBound,
c
forall a. LowerBounded a => a
lowerBound,
d
forall a. LowerBounded a => a
lowerBound,
e
forall a. LowerBounded a => a
lowerBound,
f
forall a. LowerBounded a => a
lowerBound,
g
forall a. LowerBounded a => a
lowerBound,
h
forall a. LowerBounded a => a
lowerBound,
i
forall a. LowerBounded a => a
lowerBound,
j
forall a. LowerBounded a => a
lowerBound,
k
forall a. LowerBounded a => a
lowerBound,
l
forall a. LowerBounded a => a
lowerBound,
m
forall a. LowerBounded a => a
lowerBound,
n
forall a. LowerBounded a => a
lowerBound,
o
forall a. LowerBounded a => a
lowerBound
)
{-# INLINE lowerBound #-}
instance
( UpperBounded a,
UpperBounded b,
UpperBounded c,
UpperBounded d,
UpperBounded e,
UpperBounded f,
UpperBounded g,
UpperBounded h,
UpperBounded i,
UpperBounded j,
UpperBounded k,
UpperBounded l,
UpperBounded m,
UpperBounded n,
UpperBounded o
) =>
UpperBounded (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
where
upperBound :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
upperBound =
( a
forall a. UpperBounded a => a
upperBound,
b
forall a. UpperBounded a => a
upperBound,
c
forall a. UpperBounded a => a
upperBound,
d
forall a. UpperBounded a => a
upperBound,
e
forall a. UpperBounded a => a
upperBound,
f
forall a. UpperBounded a => a
upperBound,
g
forall a. UpperBounded a => a
upperBound,
h
forall a. UpperBounded a => a
upperBound,
i
forall a. UpperBounded a => a
upperBound,
j
forall a. UpperBounded a => a
upperBound,
k
forall a. UpperBounded a => a
upperBound,
l
forall a. UpperBounded a => a
upperBound,
m
forall a. UpperBounded a => a
upperBound,
n
forall a. UpperBounded a => a
upperBound,
o
forall a. UpperBounded a => a
upperBound
)
{-# INLINE upperBound #-}