{-# LANGUAGE ImplicitParams #-}

sortBy :: (a -> a -> Bool) -> [a] -> [a]
sortBy = undefined

sort :: (?cmp :: a -> a -> Bool) => [a] -> [a]
sort = sortBy ?cmp

sort' ::
  ( ?cmp ::
      a -> a -> Bool,
    ?foo :: Int
  ) =>
  [a] -> [a]
sort' = sort
