Hello, Ian,
Would it be possible to have a generic type annotation syntax like this:
// Print prints the elements of any slice.
// Print has a type parameter T, and has a single (non-type)
// parameter s which is a slice of that type parameter.
func Print(type T)(s []T) {
==>
// Print prints the elements of any slice.
// Print has a type parameter T, and has a single (non-type)
// parameter s which is a slice of that type parameter.
func Print(s []T:type) {
This doesn't seem to clash with existing syntax, doesn't require a new pair of parenthesis, marks T as a generic type (and can have added constraint names right next to it, e.g: Print(s []T:type constraint)
Or anything similar really, that keeps the generic type description in-line with regular types, e.g. could be a special sigil added to a type parameter as well (@T, $T, etc to mark it as generic, e.g.: Print(s []$T constraint)
haven't thought this through by any means, but it strikes me as a cleaner option than a new set of parenthesis and duplication of the generic parameter names.
Does it make any sense? Don't recall seeing this in some other language...