You can tell if it’s a function call or a generic type based on where it is used; the local context. Function calls are either statements or expressions. Types appear in declarations.
a := Bar(baz)(buzz)
Is Bar a `func(some) func(thing) other` or is it a `func(type T)(some) other`? You need to know what “baz” is to be able to tell.You usually won't see much of either sinice the type argument is only necessary when it can't be inferred.
Is that a function that returns a function or a generic Reverse function specialized over type x, invoked with argument y?
I've always been a big advocate for unambiguous, clear code, especially in Go, but I don't see a big potential for confusion here.