Using angle brackets is not a must for supporting generics, but it is the
common syntax of generics in programming languages that support generics, the
same way as square brackets are the common syntax for indexing in programming
languages.
If I understand correctly, the ambiguity problem with angle brackets appears
only at instantiation, so if we prefixed all the angle brackets occurrences
with a dot(.) that ambiguity would gone.
Although prefixing the angle brackets with a dot(.) in all occurrences is not
required and maybe removed from some places and/or be required only for
instantiation.
The common use for the dot(.) in programming languages is to access some field
or property of the entity it's called on, and that would be the same(in
instantiation case), cause we would be accessing the specific function, or the
specific type of the generic function or the generic type, respectively, so
that common understanding about the dot(.) would still hold, in my opinion.
If I understand correctly(and please correct me if I am wrong) the dot(.) in
that approach doesn't introduce any ambiguity and would require only one
lookahead(to see if the following char is the left angle bracket or not), so it
should be acceptable.
example:
package list
type List.<E> struct { // the dot(.) maybe remove here
// some code
}
type FloatList List.<float64> // the dot(.) has to exist here
func NewList.<E>() (list List.<E>) { // the dot(.) maybe remove here
// some code
}
func NewListFrom.<E>(arr []E) (list List.<E>) { // the dot(.) maybe remove here
// some code
}
func(l List.<E>) Add(newElem E) { // the dot(.) maybe remove here
// some code
}
package main
func main() {
l := list.NewList.<int>() // the dot(.) has to exist here
l.Add(1)
var arr []int
intList := list.NewListFrom(arr) // type inference is done here, so the
dot(.) doesn't exist here
}
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/golang-nuts/0b206c05-e10c-48a4-b641-cb29209b9df5o%40googlegroups.com.