{-# LANGUAGE ImplicitParams, BangPatterns #-} sort :: (?cmp :: a -> a -> Bool) => [a] -> [a] sort !f = undefined