{-# LANGUAGE DeriveGeneric, ScopedTypeVariables #-} module Main where import GHC.Generics (Generic) import Test.QuickCheck data Nat = Z | S Nat deriving (Eq, Show, Generic) instance Arbitrary Nat main :: IO () main = do print $ genericShrink (S (S Z)) == [S Z] print $ genericShrink [0::Int] == [[]]