Entendiendo las enumeraciones de Scala

Tengo que decir que no entiendo las clases de enumeración de Scala. Puedo copiar y pegar el ejemplo de la documentación, pero no tengo idea de lo que está pasando.

object WeekDay extends Enumeration {
  type WeekDay = Value
  val Mon, Tue, Wed, Thu, Fri, Sat, Sun = Value
}
import WeekDay._
Que significatype WeekDay = Value ¿Y por qué tengo que escribir eso?Por que esval Mon = Value? ¿Y eso que significa?¿Por qué tengo que importar elWeekDay ¿objeto? Y,cuando yo escriboval day = WeekDay.Monpor que es tipoWeekDay.Valueno escribirWeekDay?

Respuestas a la pregunta(1)

Su respuesta a la pregunta