以下はMonoidインスタンスの例です。

MonoidTest.hs

import Test.QuickCheck

-- Monoidインスタンスの例
instance Monoid Int where
  mappend = (*)
  mempty  = 1

-- 結合律
mnLawAp :: (Monoid a, Eq a) => a -> a -> a -> Bool
mnLawAp x y z = (x `mappend` y) `mappend` z == x `mappend` (y `mappend` z)

-- 単位元律
mnLawEm :: (Monoid a, Eq a) => a -> Bool
mnLawEm x =
  let left  = mempty `mappend` x
      right = x `mappend` mempty
  in left == right && right == x

-- Monoid Intがモノイドであることのテスト ( 結合律に対する )
mnTestApInt :: IO ()
mnTestApInt = let mnLawAp' = mnLawAp :: Int -> Int -> Int -> Bool
              in quickCheck mnLawAp'

-- Monoid Intがモノイドであることのテスト ( 単位元律に対する )
mnTestEmInt :: IO ()
mnTestEmInt = let mnLawEm' = mnLawEm :: Int -> Bool
              in quickCheck mnLawEm'