id v = v
имеет тип forall a.a -> a;
, а это типоаргумент, т.е. id 1
это ещё и, грубо говоря, id @Int 1
. во всяких там агдах id : {a:Type} (v:a) -> a
- у функции явно два аргумента, но первый (a
) неявный и подставляется компилятором, а второй (v
) - явный