This is because it ∀ {A}is actually just syntactic sugar for {A : _}, which asks the compiler to automatically fill A.
This does not work very well with Sets only , because you could:
{A : Set}
{A : Set₁}
{A : Set₂}
-- etc.
, . ∀ , .
, :
data List (A : Set) : Set where
map : ∀ {A B} → (A → B) → List A → List B
map =
A Set, List Set s.
, {A : _}, , , Set s.
_+_ : ℕ → ℕ → ℕ
_+_ = -- ...
comm : ∀ x y → x + y ≡ y + x
comm = -- ...
, , :
map : ∀ {a b} {A : Set a} {B : Set b} → (A → B) → List A → List B
A b Level; .