Conversation

You get annoying ambiguities with the dependent function syntax - ie. `(A : Set) -> A` - is this a non-dependent function from `A -> A` with the first `A` annotated, or is it a dependent function with a parameter named `A`?
2
1
I appreciate Haskell more using identifiers to indicate that the left-hand of :: is a quantifiee forall (n :: Nat). .. pi (n :: Nat). .. otherwise, it's an annotation: (Eq a :: Constraint) => .. (Int :: Type) -> ..
1
I like Agda’s because it makes it clear that universal quantification is just a form of function type, but yeah, can be a right old pain to parse, especially if you want to support infix annotations. Let me know if you have any brilliant ideas!
1
gulp, the problem is that the same symbol :/:: is used for quantification and type annotation? If so (·) or another sigil can denote quantification ( a · A ) -> .. { a · A } -> .. and (:) annotation ( a · (A : type) : A ) -> .. { a · (A : Type) : A } -> ..
2
1
Nah, the issue is this combo of syntax: - (a) - a : A - A -> B - (a : A) -> B Mentally humans prioritise the dependent function, but it’s rather hard to get a parser to do that. A different symbol could help though.
1