boundedToBounded :: (Bounded a, Eq a, Bounded b) => a -> b
boundedToBounded a
  | a == maxBound = maxBound
  | otherwise = minBound
boundedToBounded :: (Bounded a, Eq a, Bounded b) => a -> b
boundedToBounded a
  | a == maxBound = maxBound
  | otherwise = minBound
boundedToBounded a
  | a == maxBound = maxBound
  | otherwise = minBound