On Thu, May 30, 2019 at 12:28 PM Michal Strba <faiface2...@gmail.com> wrote:
>
> I've been thinking about generics in Go 2 ever since the original contracts 
> proposal and few days ago, ideas finally clicked. One of the main things 
> about this proposal is that it deliberately omits the ability to restrict the 
> set of types a function can work with. This is a limitation, but I hope to 
> convince you that we can still do a vast majority of the things we were 
> missing, when we were missing generics.
>
> I'd love to share my proposal with you and engage in a good faith 
> conversation.
>
> Link to the proposal.
>
> Here's what the proposal covers:
>
> 1. Syntax of a new gen keyword.
> 2. Generic functions.
> 3. Unnamed generic arguments (a.k.a. a way to gve a type to the built-in new 
> function).
> 4. Semantics of generic values (ability to use them as map keys, ...).
> 5. Generic array lengths.
> 6. Reflection and interface{}.
> 7. Generic types (with two examples: List and Matrix).
> 8. Generic methods and their limitations due to reflection.
> 9. Generic interfaces.
> 10. List of things this proposal can't do.

One of my guidelines for an acceptable generics proposal is that
people can write Min and Max.  Your proposal admits that it doesn't
permit that.  I think that is a problem.  I'm fine with the general
idea of "do 80% of the job" but in practice people really do want to
write Min and Max.  I think they are part of the 80% that needs to be
handled, not the 20% that can be omitted.

You need to think about scoping.  The "gen" keyword doesn't just mean
that the next identifier is a generic type; it also defines that
identifier for some scope, since your examples use it that way.  The
proposal needs to carefully spell out the scope of an identifier, and
exactly when it shadows or is shadowed by other objects with the same
name.

Ian

-- 
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/CAOyqgcUGKXt4XJVaa_5PZaaN%2BVxww9T%2BU%3De%2B%2BXEc5L-AgzHEBg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to