foldOrientation :: a -> a -> Orientation -> a
foldOrientation l _ Horizontal = l
foldOrientation _ r Vertical   = r

-- | get the point before the given point, vertically or horizontally
beforeByOrientationP :: Orientation -> Point -> Point
beforeByOrientationP = foldOrientation leftOfP aboveP
-- | get the point after the given point, vertically or horizontally
afterByOrientationP :: Orientation -> Point -> Point