{-# LANGUAGE QuantifiedConstraints #-}

module Hedgehog.Classes.Common.Compat
  ( readMaybe
  , eq
  , eq1
  , eq2

  , show1
  , show2

  , neq
  , neq1
  , neq2
  ) where

import Text.Read (readMaybe)

eq :: Eq a => a -> a -> Bool
eq :: a -> a -> Bool
eq = a -> a -> Bool
forall a. Eq a => a -> a -> Bool
(==)

neq :: Eq a => a -> a -> Bool
neq :: a -> a -> Bool
neq = a -> a -> Bool
forall a. Eq a => a -> a -> Bool
(/=)

eq1 :: (Eq a, forall x. Eq x => Eq (f x)) => f a -> f a -> Bool
eq1 :: f a -> f a -> Bool
eq1 = f a -> f a -> Bool
forall a. Eq a => a -> a -> Bool
(==)

neq1 :: (Eq a, forall x. Eq x => Eq (f x)) => f a -> f a -> Bool
neq1 :: f a -> f a -> Bool
neq1 = f a -> f a -> Bool
forall a. Eq a => a -> a -> Bool
(/=)

eq2 :: (Eq a, Eq b, forall x y. (Eq x, Eq y) => Eq (f x y)) => f a b -> f a b -> Bool
eq2 :: f a b -> f a b -> Bool
eq2 = f a b -> f a b -> Bool
forall a. Eq a => a -> a -> Bool
(==)

neq2 :: (Eq a, Eq b, forall x y. (Eq x, Eq y) => Eq (f x y)) => f a b -> f a b -> Bool
neq2 :: f a b -> f a b -> Bool
neq2 = f a b -> f a b -> Bool
forall a. Eq a => a -> a -> Bool
(/=)

show1 :: (Show a, forall x. (Show x) => Show (f x)) => f a -> String
show1 :: f a -> String
show1 = f a -> String
forall a. Show a => a -> String
Prelude.show

show2 :: (Show a, Show b, forall x y. (Show x, Show y) => Show (f x y)) => f a b -> String
show2 :: f a b -> String
show2 = f a b -> String
forall a. Show a => a -> String
Prelude.show