The problem is that with current proposal Go severely lacks type inference, required for generics to look nice and clean.
A lot of the information is already in the definitions, there's no reason to repeat it, but Go chose to do that.
// Reduce reduces a []T1 to a single value using a reduction function.
func Reduce(type T1, T2)(s []T1, initializer T2, f func(T2, T1) T2) T2 {
s := []int{1, 2, 3}
sum := slices.Reduce(s, 0, func(i, j int) int { return i + j })
and the example from referenced article is even more outrageous
t1 := hashtable.New(string, int)(8, func(key string, m int) int {
We have function types literally at the same exression, but Go requires to repeat it.
The type of predicate is already in generic definition, we don’t need this verbosity. Other languages (I’d even say most of languages, used in dev work today) let us write simply something like slices.Filter(s, i->i%2).
A lot of the information is already in the definitions, there's no reason to repeat it, but Go chose to do that.
and the example from referenced article is even more outrageous We have function types literally at the same exression, but Go requires to repeat it.