data Cartesian2D = Cartesian2D {
xCoord :: Double,
yCoord :: Double
} deriving (Eq, Show)
lowestCoord :: [Cartesian2D] -> Cartesian2D
lowestCoord (x:xs) = lowestCoordAux xs x
lowestCoordAux :: [Cartesian2D] -> Cartesian2D -> Cartesian2D
lowestCoordAux (h:xs) minValue =
lowestCoordAux xs newMin
where hY = (yCoord h)
minY = (yCoord minValue)
hX = (xCoord h)
minX = (xCoord minValue)
newMin = case hY `compare` minY of
LT -> h
GT -> minValue
EQ -> case hX `compare` minX of
LT -> h
GT -> minValue
EQ -> h
lowestCoordAux [] minValue = minValue