Tipos inductivos parametrizados en Agda

Solo estoy leyendo Tipos dependientes en el trabajo. En la introducción a los tipos parametrizados, el autor menciona que en esta declaración

data List (A : Set) : Set where
  []   : List A
  _::_ : A → List A → List A

el tipo deList esSet → Set y esoA se convierte en argumento implícito para ambos constructores, es decir.

[]   : {A : Set} → List A
_::_ : {A : Set} → A → List A → List A

Bueno, traté de reescribirlo un poco diferente

data List : Set → Set where
  []   : {A : Set} → List A
  _::_ : {A : Set} → A → List A → List A

que lamentablemente no funciona (estoy tratando de aprender Agda durante dos días más o menos, pero por lo que deduje es porque los constructores están parametrizados sobreSet₀ y entoncesList A debe estar enSet₁).

De hecho, se acepta lo siguiente

data List : Set₀ → Set₁ where
  []   : {A : Set₀} → List A
  _::_ : {A : Set₀} → A → List A → List A

sin embargo, ya no puedo usar{A : Set} → ... → List (List A) (que es perfectamente comprensible).

Entonces mi pregunta: ¿Cuál es la diferencia real entreList (A : Set) : Set yList : Set → Set?

¡Gracias por tu tiempo

Respuestas a la pregunta(2)

Su respuesta a la pregunta