{-# Language LambdaCase #-} data Cartesian2D = Cartesian2D { xCoord :: Double, yCoord :: Double } deriving (Eq, Show) lowestCoord :: [Cartesian2D] -> Cartesian2D lowestCoord = minimumBy (/a b -> (\case {EQ -> (compare `on` xCoord) a b; x -> x}) . ((compare `on` yCoord) a b))