-- | 'bar @l u@' constructs the bar @[l, u]@. If @l > u@, then
-- the bar @[l, l]@ is created instead.
bar :: (Ord a) => a -> PlusInfinity a -> Bar a
bar l u
    | (Regular l) <= u = C l u
    | otherwise = C l (Regular l)
bar :: (Ord a) => a -> PlusInfinity a -> Bar a
bar l u
    | (Regular l) <= u = C l u
    | otherwise = C l (Regular l)
bar l u
    | (Regular l) <= u = C l u
    | otherwise = C l (Regular l)