In a type specific module, we can name succinctly
module Channel
type Channel
= Alpha
| Beta
other 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
| CallsignBeta
other 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.