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