{-# LANGUAGE CPP #-} {-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} module Rec1 where #if !MIN_VERSION_base(4,8,0) import Control.Applicative #endif import Data.Binary import Data.Binary.Instances () import Data.Binary.Tagged import Data.Monoid import Data.Typeable (Typeable) import GHC.Generics (Generic) import Test.QuickCheck (Arbitrary (..)) import Generators data Rec = Rec (Sum Int) (Product Int) deriving (Eq, Show, Generic, Typeable) instance Binary Rec instance Structured Rec instance Arbitrary Rec where arbitrary = Rec <$> arbitrarySum <*> arbitraryProduct