Shortest and most obfuscating solution I found is: import Data.Ord (comparing) import Control.Applicative ((<$)) compareLength :: [a] -> [a] -> Ordering compareLength = comparing (()<$) :-)