module Typeclass () where class Equal a where equals :: a -> a -> Bool instance Equal Int where equals = (==) allEqual :: Equal a => [a] -> Bool allEqual = all =<< equals . head