{-# LANGUAGE FlexibleInstances #-}
module Data.AEq (
AEq(..),
) where
import Foreign
import Foreign.C.Types
import Data.Complex
import Numeric.IEEE
infix 4 ===, ~==
class Eq a => AEq a where
(===) :: a -> a -> Bool
(===) = forall a. Eq a => a -> a -> Bool
(==)
{-# INLINE (===) #-}
(~==) :: a -> a -> Bool
(~==) = forall a. Eq a => a -> a -> Bool
(==)
{-# INLINE (~==) #-}
approxEqIEEE :: (IEEE a) => a -> a -> Bool
approxEqIEEE :: forall a. IEEE a => a -> a -> Bool
approxEqIEEE a
x a
y =
( forall a. IEEE a => a -> a -> Int
sameSignificandBits a
x a
y forall a. Ord a => a -> a -> Bool
>= Int
d
Bool -> Bool -> Bool
|| (forall a. Num a => a -> a
abs a
x forall a. Ord a => a -> a -> Bool
< forall a. IEEE a => a
epsilon Bool -> Bool -> Bool
&& forall a. Num a => a -> a
abs a
y forall a. Ord a => a -> a -> Bool
< forall a. IEEE a => a
epsilon)
Bool -> Bool -> Bool
|| (forall a. RealFloat a => a -> Bool
isNaN a
x Bool -> Bool -> Bool
&& forall a. RealFloat a => a -> Bool
isNaN a
y)
)
where
d :: Int
d = (forall a. RealFloat a => a -> Int
floatDigits a
x forall a. Num a => a -> a -> a
+ Int
1) forall a. Integral a => a -> a -> a
`div` Int
2
{-# INLINE approxEqIEEE #-}
identicalComplexIEEE :: (IEEE a) => Complex a -> Complex a -> Bool
identicalComplexIEEE :: forall a. IEEE a => Complex a -> Complex a -> Bool
identicalComplexIEEE (a
x1 :+ a
y1) (a
x2 :+ a
y2) =
(forall a. IEEE a => a -> a -> Bool
identicalIEEE a
x1 a
x2) Bool -> Bool -> Bool
&& (forall a. IEEE a => a -> a -> Bool
identicalIEEE a
y1 a
y2)
{-# INLINE identicalComplexIEEE #-}
approxEqComplexIEEE :: (IEEE a) => Complex a -> Complex a -> Bool
approxEqComplexIEEE :: forall a. IEEE a => Complex a -> Complex a -> Bool
approxEqComplexIEEE Complex a
z1 Complex a
z2 = let
(a
r1,a
c1) = forall a. RealFloat a => Complex a -> (a, a)
polar Complex a
z1
(a
r2,a
c2) = forall a. RealFloat a => Complex a -> (a, a)
polar Complex a
z2
angle :: a
angle = forall a. Num a => a -> a
abs (a
c1 forall a. Num a => a -> a -> a
- a
c2)
in ( ( forall a. IEEE a => a -> a -> Bool
approxEqIEEE a
r1 a
r2
Bool -> Bool -> Bool
&& (a
angle forall a. Ord a => a -> a -> Bool
< a
32forall a. Num a => a -> a -> a
*forall a. IEEE a => a
epsilon Bool -> Bool -> Bool
|| a
angle forall a. Ord a => a -> a -> Bool
> a
2forall a. Num a => a -> a -> a
*(forall a. Floating a => a
pi forall a. Num a => a -> a -> a
- a
16forall a. Num a => a -> a -> a
*forall a. IEEE a => a
epsilon) Bool -> Bool -> Bool
|| forall a. RealFloat a => a -> Bool
isNaN a
angle)
)
Bool -> Bool -> Bool
|| (a
r1 forall a. Ord a => a -> a -> Bool
< forall a. IEEE a => a
epsilon Bool -> Bool -> Bool
&& a
r2 forall a. Ord a => a -> a -> Bool
< forall a. IEEE a => a
epsilon)
)
{-# INLINE approxEqComplexIEEE #-}
instance AEq Float where
=== :: Float -> Float -> Bool
(===) = forall a. IEEE a => a -> a -> Bool
identicalIEEE
{-# INLINE (===) #-}
~== :: Float -> Float -> Bool
(~==) = forall a. IEEE a => a -> a -> Bool
approxEqIEEE
{-# INLINE (~==) #-}
instance AEq Double where
=== :: Double -> Double -> Bool
(===) = forall a. IEEE a => a -> a -> Bool
identicalIEEE
{-# INLINE (===) #-}
~== :: Double -> Double -> Bool
(~==) = forall a. IEEE a => a -> a -> Bool
approxEqIEEE
{-# INLINE (~==) #-}
instance AEq (Complex Float) where
=== :: Complex Float -> Complex Float -> Bool
(===) = forall a. IEEE a => Complex a -> Complex a -> Bool
identicalComplexIEEE
{-# INLINE (===) #-}
~== :: Complex Float -> Complex Float -> Bool
(~==) = forall a. IEEE a => Complex a -> Complex a -> Bool
approxEqComplexIEEE
{-# INLINE (~==) #-}
instance AEq (Complex Double) where
=== :: Complex Double -> Complex Double -> Bool
(===) = forall a. IEEE a => Complex a -> Complex a -> Bool
identicalComplexIEEE
{-# INLINE (===) #-}
~== :: Complex Double -> Complex Double -> Bool
(~==) = forall a. IEEE a => Complex a -> Complex a -> Bool
approxEqComplexIEEE
{-# INLINE (~==) #-}
instance AEq CFloat where
=== :: CFloat -> CFloat -> Bool
(===) = forall a. IEEE a => a -> a -> Bool
identicalIEEE
{-# INLINE (===) #-}
~== :: CFloat -> CFloat -> Bool
(~==) = forall a. IEEE a => a -> a -> Bool
approxEqIEEE
{-# INLINE (~==) #-}
instance AEq CDouble where
=== :: CDouble -> CDouble -> Bool
(===) = forall a. IEEE a => a -> a -> Bool
identicalIEEE
{-# INLINE (===) #-}
~== :: CDouble -> CDouble -> Bool
(~==) = forall a. IEEE a => a -> a -> Bool
approxEqIEEE
{-# INLINE (~==) #-}
instance AEq (Complex CFloat) where
=== :: Complex CFloat -> Complex CFloat -> Bool
(===) = forall a. IEEE a => Complex a -> Complex a -> Bool
identicalComplexIEEE
{-# INLINE (===) #-}
~== :: Complex CFloat -> Complex CFloat -> Bool
(~==) = forall a. IEEE a => Complex a -> Complex a -> Bool
approxEqComplexIEEE
{-# INLINE (~==) #-}
instance AEq (Complex CDouble) where
=== :: Complex CDouble -> Complex CDouble -> Bool
(===) = forall a. IEEE a => Complex a -> Complex a -> Bool
identicalComplexIEEE
{-# INLINE (===) #-}
~== :: Complex CDouble -> Complex CDouble -> Bool
(~==) = forall a. IEEE a => Complex a -> Complex a -> Bool
approxEqComplexIEEE
{-# INLINE (~==) #-}
instance AEq Bool
instance AEq Char
instance AEq Int
instance AEq Int8
instance AEq Int16
instance AEq Int32
instance AEq Int64
instance AEq Integer
instance AEq Ordering
instance AEq Word
instance AEq Word8
instance AEq Word16
instance AEq Word32
instance AEq Word64
instance AEq ()
instance AEq WordPtr
instance AEq IntPtr
instance AEq (StablePtr a)
instance AEq (Ptr a)
instance AEq (FunPtr a)
instance AEq (ForeignPtr a)
instance AEq CChar
instance AEq CSChar
instance AEq CUChar
instance AEq CShort
instance AEq CUShort
instance AEq CInt
instance AEq CUInt
instance AEq CLong
instance AEq CULong
instance AEq CPtrdiff
instance AEq CSize
instance AEq CWchar
instance AEq CSigAtomic
instance AEq CLLong
instance AEq CULLong
instance AEq CIntPtr
instance AEq CUIntPtr
instance AEq CIntMax
instance AEq CUIntMax
instance AEq CClock
instance AEq CTime
eqListsWith :: (a -> a -> Bool) -> [a] -> [a] -> Bool
eqListsWith :: forall a. (a -> a -> Bool) -> [a] -> [a] -> Bool
eqListsWith a -> a -> Bool
f (a
x:[a]
xs) (a
y:[a]
ys) = a -> a -> Bool
f a
x a
y Bool -> Bool -> Bool
&& forall a. (a -> a -> Bool) -> [a] -> [a] -> Bool
eqListsWith a -> a -> Bool
f [a]
xs [a]
ys
eqListsWith a -> a -> Bool
_ [] [] = Bool
True
eqListsWith a -> a -> Bool
_ [a]
_ [a]
_ = Bool
False
{-# INLINE eqListsWith #-}
instance (AEq a) => AEq [a] where
=== :: [a] -> [a] -> Bool
(===) = forall a. (a -> a -> Bool) -> [a] -> [a] -> Bool
eqListsWith forall a. AEq a => a -> a -> Bool
(===)
{-# INLINE (===) #-}
~== :: [a] -> [a] -> Bool
(~==) = forall a. (a -> a -> Bool) -> [a] -> [a] -> Bool
eqListsWith forall a. AEq a => a -> a -> Bool
(~==)
{-# INLINE (~==) #-}
instance (AEq a) => AEq (Maybe a) where
=== :: Maybe a -> Maybe a -> Bool
(===) Maybe a
Nothing Maybe a
Nothing = Bool
True
(===) (Just a
x) (Just a
y) = forall a. AEq a => a -> a -> Bool
(===) a
x a
y
(===) Maybe a
_ Maybe a
_ = Bool
False
{-# INLINE (===) #-}
~== :: Maybe a -> Maybe a -> Bool
(~==) Maybe a
Nothing Maybe a
Nothing = Bool
True
(~==) (Just a
x) (Just a
y) = forall a. AEq a => a -> a -> Bool
(~==) a
x a
y
(~==) Maybe a
_ Maybe a
_ = Bool
False
{-# INLINE (~==) #-}
instance (AEq a, AEq b) => AEq (Either a b) where
=== :: Either a b -> Either a b -> Bool
(===) (Left a
a1) (Left a
a2) = forall a. AEq a => a -> a -> Bool
(===) a
a1 a
a2
(===) (Right b
b1) (Right b
b2) = forall a. AEq a => a -> a -> Bool
(===) b
b1 b
b2
(===) Either a b
_ Either a b
_ = Bool
False
{-# INLINE (===) #-}
~== :: Either a b -> Either a b -> Bool
(~==) (Left a
a1) (Left a
a2) = forall a. AEq a => a -> a -> Bool
(~==) a
a1 a
a2
(~==) (Right b
b1) (Right b
b2) = forall a. AEq a => a -> a -> Bool
(~==) b
b1 b
b2
(~==) Either a b
_ Either a b
_ = Bool
False
{-# INLINE (~==) #-}
instance (AEq a, AEq b) => AEq (a,b) where
=== :: (a, b) -> (a, b) -> Bool
(===) (a
a1,b
b1) (a
a2,b
b2) =
( (forall a. AEq a => a -> a -> Bool
(===) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) b
b1 b
b2)
)
{-# INLINE (===) #-}
~== :: (a, b) -> (a, b) -> Bool
(~==) (a
a1,b
b1) (a
a2,b
b2) =
( (forall a. AEq a => a -> a -> Bool
(~==) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) b
b1 b
b2)
)
{-# INLINE (~==) #-}
instance (AEq a, AEq b, AEq c) => AEq (a,b,c) where
=== :: (a, b, c) -> (a, b, c) -> Bool
(===) (a
a1,b
b1,c
c1) (a
a2,b
b2,c
c2) =
( (forall a. AEq a => a -> a -> Bool
(===) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) c
c1 c
c2)
)
{-# INLINE (===) #-}
~== :: (a, b, c) -> (a, b, c) -> Bool
(~==) (a
a1,b
b1,c
c1) (a
a2,b
b2,c
c2) =
( (forall a. AEq a => a -> a -> Bool
(~==) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) c
c1 c
c2)
)
{-# INLINE (~==) #-}
instance (AEq a, AEq b, AEq c, AEq d) => AEq (a,b,c,d) where
=== :: (a, b, c, d) -> (a, b, c, d) -> Bool
(===) (a
a1,b
b1,c
c1,d
d1) (a
a2,b
b2,c
c2,d
d2) =
( (forall a. AEq a => a -> a -> Bool
(===) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) c
c1 c
c2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) d
d1 d
d2)
)
{-# INLINE (===) #-}
~== :: (a, b, c, d) -> (a, b, c, d) -> Bool
(~==) (a
a1,b
b1,c
c1,d
d1) (a
a2,b
b2,c
c2,d
d2) =
( (forall a. AEq a => a -> a -> Bool
(~==) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) c
c1 c
c2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) d
d1 d
d2)
)
{-# INLINE (~==) #-}
instance (AEq a, AEq b, AEq c, AEq d, AEq e) => AEq (a,b,c,d,e) where
=== :: (a, b, c, d, e) -> (a, b, c, d, e) -> Bool
(===) (a
a1,b
b1,c
c1,d
d1,e
e1) (a
a2,b
b2,c
c2,d
d2,e
e2) =
( (forall a. AEq a => a -> a -> Bool
(===) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) c
c1 c
c2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) d
d1 d
d2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) e
e1 e
e2)
)
{-# INLINE (===) #-}
~== :: (a, b, c, d, e) -> (a, b, c, d, e) -> Bool
(~==) (a
a1,b
b1,c
c1,d
d1,e
e1) (a
a2,b
b2,c
c2,d
d2,e
e2) =
( (forall a. AEq a => a -> a -> Bool
(~==) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) c
c1 c
c2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) d
d1 d
d2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) e
e1 e
e2)
)
{-# INLINE (~==) #-}
instance (AEq a, AEq b, AEq c, AEq d, AEq e, AEq f) => AEq (a,b,c,d,e,f) where
=== :: (a, b, c, d, e, f) -> (a, b, c, d, e, f) -> Bool
(===) (a
a1,b
b1,c
c1,d
d1,e
e1,f
f1) (a
a2,b
b2,c
c2,d
d2,e
e2,f
f2) =
( (forall a. AEq a => a -> a -> Bool
(===) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) c
c1 c
c2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) d
d1 d
d2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) e
e1 e
e2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) f
f1 f
f2)
)
{-# INLINE (===) #-}
~== :: (a, b, c, d, e, f) -> (a, b, c, d, e, f) -> Bool
(~==) (a
a1,b
b1,c
c1,d
d1,e
e1,f
f1) (a
a2,b
b2,c
c2,d
d2,e
e2,f
f2) =
( (forall a. AEq a => a -> a -> Bool
(~==) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) c
c1 c
c2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) d
d1 d
d2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) e
e1 e
e2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) f
f1 f
f2)
)
{-# INLINE (~==) #-}
instance (AEq a, AEq b, AEq c, AEq d, AEq e, AEq f, AEq g) => AEq (a,b,c,d,e,f,g) where
=== :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) -> Bool
(===) (a
a1,b
b1,c
c1,d
d1,e
e1,f
f1,g
g1) (a
a2,b
b2,c
c2,d
d2,e
e2,f
f2,g
g2) =
( (forall a. AEq a => a -> a -> Bool
(===) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) c
c1 c
c2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) d
d1 d
d2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) e
e1 e
e2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) f
f1 f
f2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) g
g1 g
g2)
)
{-# INLINE (===) #-}
~== :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) -> Bool
(~==) (a
a1,b
b1,c
c1,d
d1,e
e1,f
f1,g
g1) (a
a2,b
b2,c
c2,d
d2,e
e2,f
f2,g
g2) =
( (forall a. AEq a => a -> a -> Bool
(~==) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) c
c1 c
c2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) d
d1 d
d2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) e
e1 e
e2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) f
f1 f
f2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) g
g1 g
g2)
)
{-# INLINE (~==) #-}
instance (AEq a, AEq b, AEq c, AEq d, AEq e, AEq f, AEq g, AEq h) => AEq (a,b,c,d,e,f,g,h) where
=== :: (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) -> Bool
(===) (a
a1,b
b1,c
c1,d
d1,e
e1,f
f1,g
g1,h
h1) (a
a2,b
b2,c
c2,d
d2,e
e2,f
f2,g
g2,h
h2) =
( (forall a. AEq a => a -> a -> Bool
(===) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) c
c1 c
c2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) d
d1 d
d2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) e
e1 e
e2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) f
f1 f
f2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) g
g1 g
g2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) h
h1 h
h2)
)
{-# INLINE (===) #-}
~== :: (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) -> Bool
(~==) (a
a1,b
b1,c
c1,d
d1,e
e1,f
f1,g
g1,h
h1) (a
a2,b
b2,c
c2,d
d2,e
e2,f
f2,g
g2,h
h2) =
( (forall a. AEq a => a -> a -> Bool
(~==) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) c
c1 c
c2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) d
d1 d
d2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) e
e1 e
e2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) f
f1 f
f2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) g
g1 g
g2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) h
h1 h
h2)
)
{-# INLINE (~==) #-}
instance (AEq a, AEq b, AEq c, AEq d, AEq e, AEq f, AEq g, AEq h, AEq i) => AEq (a,b,c,d,e,f,g,h,i) where
=== :: (a, b, c, d, e, f, g, h, i) -> (a, b, c, d, e, f, g, h, i) -> Bool
(===) (a
a1,b
b1,c
c1,d
d1,e
e1,f
f1,g
g1,h
h1,i
i1) (a
a2,b
b2,c
c2,d
d2,e
e2,f
f2,g
g2,h
h2,i
i2) =
( (forall a. AEq a => a -> a -> Bool
(===) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) c
c1 c
c2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) d
d1 d
d2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) e
e1 e
e2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) f
f1 f
f2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) g
g1 g
g2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) h
h1 h
h2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) i
i1 i
i2)
)
{-# INLINE (===) #-}
~== :: (a, b, c, d, e, f, g, h, i) -> (a, b, c, d, e, f, g, h, i) -> Bool
(~==) (a
a1,b
b1,c
c1,d
d1,e
e1,f
f1,g
g1,h
h1,i
i1) (a
a2,b
b2,c
c2,d
d2,e
e2,f
f2,g
g2,h
h2,i
i2) =
( (forall a. AEq a => a -> a -> Bool
(~==) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) c
c1 c
c2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) d
d1 d
d2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) e
e1 e
e2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) f
f1 f
f2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) g
g1 g
g2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) h
h1 h
h2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) i
i1 i
i2)
)
{-# INLINE (~==) #-}
instance (AEq a, AEq b, AEq c, AEq d, AEq e, AEq f, AEq g, AEq h, AEq i, AEq j) => AEq (a,b,c,d,e,f,g,h,i,j) where
=== :: (a, b, c, d, e, f, g, h, i, j)
-> (a, b, c, d, e, f, g, h, i, j) -> Bool
(===) (a
a1,b
b1,c
c1,d
d1,e
e1,f
f1,g
g1,h
h1,i
i1,j
j1) (a
a2,b
b2,c
c2,d
d2,e
e2,f
f2,g
g2,h
h2,i
i2,j
j2) =
( (forall a. AEq a => a -> a -> Bool
(===) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) c
c1 c
c2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) d
d1 d
d2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) e
e1 e
e2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) f
f1 f
f2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) g
g1 g
g2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) h
h1 h
h2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) i
i1 i
i2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) j
j1 j
j2)
)
{-# INLINE (===) #-}
~== :: (a, b, c, d, e, f, g, h, i, j)
-> (a, b, c, d, e, f, g, h, i, j) -> Bool
(~==) (a
a1,b
b1,c
c1,d
d1,e
e1,f
f1,g
g1,h
h1,i
i1,j
j1) (a
a2,b
b2,c
c2,d
d2,e
e2,f
f2,g
g2,h
h2,i
i2,j
j2) =
( (forall a. AEq a => a -> a -> Bool
(~==) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) c
c1 c
c2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) d
d1 d
d2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) e
e1 e
e2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) f
f1 f
f2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) g
g1 g
g2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) h
h1 h
h2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) i
i1 i
i2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) j
j1 j
j2)
)
{-# INLINE (~==) #-}
instance (AEq a, AEq b, AEq c, AEq d, AEq e, AEq f, AEq g, AEq h, AEq i, AEq j, AEq k) => AEq (a,b,c,d,e,f,g,h,i,j,k) where
=== :: (a, b, c, d, e, f, g, h, i, j, k)
-> (a, b, c, d, e, f, g, h, i, j, k) -> Bool
(===) (a
a1,b
b1,c
c1,d
d1,e
e1,f
f1,g
g1,h
h1,i
i1,j
j1,k
k1) (a
a2,b
b2,c
c2,d
d2,e
e2,f
f2,g
g2,h
h2,i
i2,j
j2,k
k2) =
( (forall a. AEq a => a -> a -> Bool
(===) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) c
c1 c
c2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) d
d1 d
d2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) e
e1 e
e2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) f
f1 f
f2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) g
g1 g
g2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) h
h1 h
h2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) i
i1 i
i2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) j
j1 j
j2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) k
k1 k
k2)
)
{-# INLINE (===) #-}
~== :: (a, b, c, d, e, f, g, h, i, j, k)
-> (a, b, c, d, e, f, g, h, i, j, k) -> Bool
(~==) (a
a1,b
b1,c
c1,d
d1,e
e1,f
f1,g
g1,h
h1,i
i1,j
j1,k
k1) (a
a2,b
b2,c
c2,d
d2,e
e2,f
f2,g
g2,h
h2,i
i2,j
j2,k
k2) =
( (forall a. AEq a => a -> a -> Bool
(~==) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) c
c1 c
c2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) d
d1 d
d2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) e
e1 e
e2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) f
f1 f
f2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) g
g1 g
g2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) h
h1 h
h2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) i
i1 i
i2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) j
j1 j
j2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) k
k1 k
k2)
)
{-# INLINE (~==) #-}
instance (AEq a, AEq b, AEq c, AEq d, AEq e, AEq f, AEq g, AEq h, AEq i, AEq j, AEq k, AEq l) => AEq (a,b,c,d,e,f,g,h,i,j,k,l) where
=== :: (a, b, c, d, e, f, g, h, i, j, k, l)
-> (a, b, c, d, e, f, g, h, i, j, k, l) -> Bool
(===) (a
a1,b
b1,c
c1,d
d1,e
e1,f
f1,g
g1,h
h1,i
i1,j
j1,k
k1,l
l1) (a
a2,b
b2,c
c2,d
d2,e
e2,f
f2,g
g2,h
h2,i
i2,j
j2,k
k2,l
l2) =
( (forall a. AEq a => a -> a -> Bool
(===) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) c
c1 c
c2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) d
d1 d
d2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) e
e1 e
e2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) f
f1 f
f2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) g
g1 g
g2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) h
h1 h
h2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) i
i1 i
i2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) j
j1 j
j2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) k
k1 k
k2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) l
l1 l
l2)
)
{-# INLINE (===) #-}
~== :: (a, b, c, d, e, f, g, h, i, j, k, l)
-> (a, b, c, d, e, f, g, h, i, j, k, l) -> Bool
(~==) (a
a1,b
b1,c
c1,d
d1,e
e1,f
f1,g
g1,h
h1,i
i1,j
j1,k
k1,l
l1) (a
a2,b
b2,c
c2,d
d2,e
e2,f
f2,g
g2,h
h2,i
i2,j
j2,k
k2,l
l2) =
( (forall a. AEq a => a -> a -> Bool
(~==) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) c
c1 c
c2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) d
d1 d
d2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) e
e1 e
e2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) f
f1 f
f2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) g
g1 g
g2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) h
h1 h
h2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) i
i1 i
i2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) j
j1 j
j2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) k
k1 k
k2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) l
l1 l
l2)
)
{-# INLINE (~==) #-}
instance (AEq a, AEq b, AEq c, AEq d, AEq e, AEq f, AEq g, AEq h, AEq i, AEq j, AEq k, AEq l, AEq m) => AEq (a,b,c,d,e,f,g,h,i,j,k,l,m) where
=== :: (a, b, c, d, e, f, g, h, i, j, k, l, m)
-> (a, b, c, d, e, f, g, h, i, j, k, l, m) -> Bool
(===) (a
a1,b
b1,c
c1,d
d1,e
e1,f
f1,g
g1,h
h1,i
i1,j
j1,k
k1,l
l1,m
m1) (a
a2,b
b2,c
c2,d
d2,e
e2,f
f2,g
g2,h
h2,i
i2,j
j2,k
k2,l
l2,m
m2) =
( (forall a. AEq a => a -> a -> Bool
(===) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) c
c1 c
c2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) d
d1 d
d2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) e
e1 e
e2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) f
f1 f
f2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) g
g1 g
g2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) h
h1 h
h2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) i
i1 i
i2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) j
j1 j
j2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) k
k1 k
k2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) l
l1 l
l2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) m
m1 m
m2)
)
{-# INLINE (===) #-}
~== :: (a, b, c, d, e, f, g, h, i, j, k, l, m)
-> (a, b, c, d, e, f, g, h, i, j, k, l, m) -> Bool
(~==) (a
a1,b
b1,c
c1,d
d1,e
e1,f
f1,g
g1,h
h1,i
i1,j
j1,k
k1,l
l1,m
m1) (a
a2,b
b2,c
c2,d
d2,e
e2,f
f2,g
g2,h
h2,i
i2,j
j2,k
k2,l
l2,m
m2) =
( (forall a. AEq a => a -> a -> Bool
(~==) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) c
c1 c
c2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) d
d1 d
d2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) e
e1 e
e2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) f
f1 f
f2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) g
g1 g
g2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) h
h1 h
h2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) i
i1 i
i2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) j
j1 j
j2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) k
k1 k
k2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) l
l1 l
l2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) m
m1 m
m2)
)
{-# INLINE (~==) #-}
instance (AEq a, AEq b, AEq c, AEq d, AEq e, AEq f, AEq g, AEq h, AEq i, AEq j, AEq k, AEq l, AEq m, AEq n) => AEq (a,b,c,d,e,f,g,h,i,j,k,l,m,n) where
=== :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n)
-> (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> Bool
(===) (a
a1,b
b1,c
c1,d
d1,e
e1,f
f1,g
g1,h
h1,i
i1,j
j1,k
k1,l
l1,m
m1,n
n1) (a
a2,b
b2,c
c2,d
d2,e
e2,f
f2,g
g2,h
h2,i
i2,j
j2,k
k2,l
l2,m
m2,n
n2) =
( (forall a. AEq a => a -> a -> Bool
(===) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) c
c1 c
c2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) d
d1 d
d2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) e
e1 e
e2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) f
f1 f
f2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) g
g1 g
g2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) h
h1 h
h2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) i
i1 i
i2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) j
j1 j
j2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) k
k1 k
k2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) l
l1 l
l2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) m
m1 m
m2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) n
n1 n
n2)
)
{-# INLINE (===) #-}
~== :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n)
-> (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> Bool
(~==) (a
a1,b
b1,c
c1,d
d1,e
e1,f
f1,g
g1,h
h1,i
i1,j
j1,k
k1,l
l1,m
m1,n
n1) (a
a2,b
b2,c
c2,d
d2,e
e2,f
f2,g
g2,h
h2,i
i2,j
j2,k
k2,l
l2,m
m2,n
n2) =
( (forall a. AEq a => a -> a -> Bool
(~==) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) c
c1 c
c2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) d
d1 d
d2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) e
e1 e
e2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) f
f1 f
f2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) g
g1 g
g2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) h
h1 h
h2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) i
i1 i
i2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) j
j1 j
j2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) k
k1 k
k2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) l
l1 l
l2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) m
m1 m
m2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) n
n1 n
n2)
)
{-# INLINE (~==) #-}
instance (AEq a, AEq b, AEq c, AEq d, AEq e, AEq f, AEq g, AEq h, AEq i, AEq j, AEq k, AEq l, AEq m, AEq n, AEq o) => AEq (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o) where
=== :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
-> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> Bool
(===) (a
a1,b
b1,c
c1,d
d1,e
e1,f
f1,g
g1,h
h1,i
i1,j
j1,k
k1,l
l1,m
m1,n
n1,o
o1) (a
a2,b
b2,c
c2,d
d2,e
e2,f
f2,g
g2,h
h2,i
i2,j
j2,k
k2,l
l2,m
m2,n
n2,o
o2) =
( (forall a. AEq a => a -> a -> Bool
(===) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) c
c1 c
c2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) d
d1 d
d2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) e
e1 e
e2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) f
f1 f
f2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) g
g1 g
g2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) h
h1 h
h2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) i
i1 i
i2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) j
j1 j
j2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) k
k1 k
k2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) l
l1 l
l2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) m
m1 m
m2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) n
n1 n
n2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(===) o
o1 o
o2)
)
{-# INLINE (===) #-}
~== :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)
-> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> Bool
(~==) (a
a1,b
b1,c
c1,d
d1,e
e1,f
f1,g
g1,h
h1,i
i1,j
j1,k
k1,l
l1,m
m1,n
n1,o
o1) (a
a2,b
b2,c
c2,d
d2,e
e2,f
f2,g
g2,h
h2,i
i2,j
j2,k
k2,l
l2,m
m2,n
n2,o
o2) =
( (forall a. AEq a => a -> a -> Bool
(~==) a
a1 a
a2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) b
b1 b
b2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) c
c1 c
c2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) d
d1 d
d2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) e
e1 e
e2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) f
f1 f
f2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) g
g1 g
g2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) h
h1 h
h2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) i
i1 i
i2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) j
j1 j
j2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) k
k1 k
k2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) l
l1 l
l2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) m
m1 m
m2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) n
n1 n
n2)
Bool -> Bool -> Bool
&& (forall a. AEq a => a -> a -> Bool
(~==) o
o1 o
o2)
)
{-# INLINE (~==) #-}