Conversation

Things get even uglier when you add in Agda's additional sugar: (A B : Type) (C : Type -> Type) -> C A It could be either function application or a dependent function, up until you get to the arrow. Then you go with the dependent function interpretation.
2
1
So yeah, the parser needs to take into account that any time, something starting with `(` could suddenly turn into a dependent function type - but only sometimes. `(A) -> A` is non-dependent, for example.
2