    {-# 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 :: forall a. Eq a => a -> a -> Bool
    eq = a -> a -> Bool
    forall a. Eq a => a -> a -> Bool
    (==)

    neq :: Eq a => a -> a -> Bool
    neq :: forall a. Eq a => 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 :: forall a (f :: * -> *).
    (Eq a, forall x. Eq x => Eq (f x)) =>
    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 :: forall a (f :: * -> *).
    (Eq a, forall x. Eq x => Eq (f x)) =>
    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 :: forall a b (f :: * -> * -> *).
    (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
    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 :: forall a b (f :: * -> * -> *).
    (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
    forall a. Eq a => a -> a -> Bool
    (/=)

    show1 :: (Show a, forall x. (Show x) => Show (f x)) => f a -> String
    show1 :: forall a (f :: * -> *).
    (Show a, forall x. Show x => Show (f x)) =>
    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 :: forall a b (f :: * -> * -> *).
    (Show a, Show b, forall x y. (Show x, Show y) => Show (f x y)) =>
    f a b -> String
    show2 = f a b -> String
    forall a. Show a => a -> String
    Prelude.show