{-# LANGUAGE CPP #-} module Debug.Hoed.Compat (addConstraint, sortOn, (<$), (<$>)) where import Control.Applicative import Data.List import Language.Haskell.TH #if __GLASGOW_HASKELL__ < 710 sortOn :: Ord b => (a -> b) -> [a] -> [a] sortOn f = map snd . sortOn' fst . map (\x -> (f x, x)) sortOn' :: Ord b => (a -> b) -> [a] -> [a] sortOn' f = sortBy (\x y -> compare (f x) (f y)) #endif addConstraint :: Name -> [Type] -> Pred addConstraint name args = #if __GLASGOW_HASKELL__ < 710 ClassP name args #else foldl' AppT (ConT name) args #endif