On Tue, Jan 5, 2021 at 12:03 PM Anonymous AWK fan <awkfa...@mailfence.com> wrote:
> Why does there need to be a delimiter, there isn't one between chan and > int in chan int, which I think is more readable than chan[int]. > `chan` is a keyword, names of generic types and functions are identifiers. So, in a way, yes, there is a delimiter: `chan`. I think most generic types would only have 1 type-parameter and the syntax > should be like the built-in ones ([]T, *T, func(Params) Result, > map[Key]Elem and chan T). Putting the extra ones in square brackets is the > best thing I can think of. Also I think Graph[Node]Edge or Graph[Edge]Node > is still readable. > Readability is not a binary choice, but a matter of degree. Everything is *somewhat* readable. But implying an asymmetry that isn't there seems confusing to me. I was only suggesting this for generic types. > Well, then that's another drawback. Using inconsistent syntax for generic types and functions is confusing. On Tue, Jan 5, 2021 at 12:43 PM Anonymous AWK fan <awkfa...@mailfence.com> wrote: > Axel, please send your reply to golang-nuts too, you can ignore the rest > of this, I already sent it to you but not golang-nuts because I didn't > reply to all. > > > What is the "them" to be omitted if there is only one type parameter? It > wouldn't make sense to omit the brackets (because there needs to be some > delimiter between the name of the generic function/type and the type > argument). But if there is only one type-parameter anyway, I don't know > what else you would omit. > > Why does there need to be a delimiter, there isn't one between chan and > int in chan int, which I think is more readable than chan[int]. > > > Either way - you are using `sync.Map` to motivate this, with a clear > analogue to `map`. But what about types that *don't* represent a map (like > the Graph-example, where both type-parameters are on mostly equal footing)? > > I think most generic types would only have 1 type-parameter and the syntax > should be like the built-in ones ([]T, *T, func(Params) Result, > map[Key]Elem and chan T). Putting the extra ones in square brackets is the > best thing I can think of. Also I think Graph[Node]Edge or Graph[Edge]Node > is still readable. > > > And what about generic functions? I think > > Foo[int]string(bar, baz) > > isn't super readable, TBH. > > I was only suggesting this for generic types. > -- 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 golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CAEkBMfEq9tNrSt5n9DixEoW9uAYq96-uDQHrVGT3iCsC2KgZ6A%40mail.gmail.com.