{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE OverlappingInstances #-} class IsList a where isList :: a -> Bool instance IsList a where isList x = False instance IsList [a] where isList x = True main = print (isList 42) >> print (isList [42])