I read the proposal and am very impressed by it. I have 3 concerns however.

1. `F(type T)(p T) { ... }`

To me, having 2 or 3 sets of parentheses is very weird. All mainstream 
programming languages have only 1 set of parentheses for the function's 
arguments. I've never seen 2 before. I know the proposal says the authors 
of the draft considered other common symbols including colon. *I still 
think `::` seems nicest.*

2. Expanding interfaces to include fields

Currently interfaces can dictate methods only. The proposal also adds type 
lists.
*I propose that for the purposes of generics, the interface also defines 
fields.* This has been rejected numerous times for interfaces (as it is 
now), but for generics, I think it will greatly enhance the power given to 
developers whilst honouring the intention/spirit of the proposal.

See Typescript for guidance. They have successfully implemented interfaces 
that can define fields, type lists and method names in their contracts. The 
team at Microsoft obviously saw a use for it.

3. Compile time.

I started using Go around Go1.3 (the C compiler days). Back then compiling 
was blink-of-an-eye fast. I used it as a selling point to everyone I met at 
meetups (there was minimal uptake of Go back then so it was meetups for 
other languages). Now the compiler is fast but for moderate size projects, 
it's no longer blink-of-an-eye fast. I don't bother hyping this feature any 
more.

Obviously based on how generics is implemented, the compiler will again be 
slower.

*I propose a compile flag so that when developing all the generic type 
checking etc is done at run-time (default behaviour). When ready to build 
for production, a compile flag can use used to move the type checking to 
happen at compile time.*

Thanks for your time,

- pjebs

-- 
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/c0a3a6a2-0c73-4246-ac0b-56da96210ffdo%40googlegroups.com.

Reply via email to