{-# LANGUAGE DataKinds , FlexibleContexts , FlexibleInstances , StandaloneDeriving , TypeOperators #-} {-# OPTIONS_GHC -fno-warn-orphans #-} module Test.Instances where import Data.Vinyl import Data.Vinyl.Functor import Test.QuickCheck instance Arbitrary (Rec f '[]) where arbitrary = pure RNil shrink = shrinkNothing instance (Arbitrary (Rec f rs), Arbitrary (f r)) => Arbitrary (Rec f (r ': rs)) where arbitrary = (:&) <$> arbitrary <*> arbitrary shrink = shrinkNothing deriving instance Eq a => Eq (Identity a) instance Arbitrary a => Arbitrary (Identity a) where arbitrary = Identity <$> arbitrary shrink (Identity a) = Identity <$> shrink a