import Test.QuickCheck app :: [a] -> [a] -> [a] app xs ys = case xs of [] -> ys x : xs' -> x : app xs' ys assoc :: [Int] -> [Int] -> [Int] -> Bool assoc xs ys zs = app xs (app ys zs) == app (app xs ys) zs main :: IO () main = quickCheck assoc