In a type specific module, we can name succinctly
module Channel
type Channel
= Alpha
| Betaother code will reference like such
otherModule : Channel.Channel
otherModule =
Channel.Alpha in a shared/container module, it's usually better to namespace variants
module Communication
type Channel
= ChannelAlpha
| ChannelBeta
-- and avoid conflict
type Callsign
= CallsignAlpha
| CallsignBetaother code will reference like such
otherModule : Communication.Channel
otherModule =
Communication.ChannelAlpha even if we had let type Channel win and keep the succinct Alpha name, and only namespace type Callsign = CallsignAlpha | CallsignBeta, when other code references Communication.Alpha it would've been ambiguous anyways.