I regard current Team's proposal a way better than the first iteration. But -
while I see a need for generic way to write common code, I also share
concerns about readability and future abuse of the materialized Go generics
being similar to "the other languages". I consciously did not patricipate in 
the 
[Generics, please go 
away!](https://groups.google.com/g/golang-nuts/c/LEEuJPOg0oo)
bikeshed, but I would like to share an idea that may possibly reconcile both 
camps.

       "Signature switch" - readable generic code preserving the Go way.

Generic function declaration is 
https://golang.org/ref/spec#Function_declarations
with at least one type in the Signature given as the ascii character "+" 
followed
by single capital ascii letter, further reffered to as "TypeLetter"; and with a 
single,
non empty, signature switch present in the function body:

func f (x +T) (r +R) {      // generic function
        switch func.(type) {      // Signature Switch here. Resolves at COMPILE 
TIME.
        case func(x int) (r int): // call-site signature to match
                r = x/2                 // instantiated code, T and R are now 
ints
        }
        return r
}

More to read at: https://play.golang.org/p/Q1ry4KPoOOJ

Hope this helps,

-- 
Wojciech S. Czarnecki
 << ^oo^ >> OHIR-RIPE

-- 
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/20201231193635.0d27177a%40xmint.

Reply via email to