In that example, how would you call the `New` function? On Monday, 22 October 2018 10:10:51 UTC+1, Sebastien Binet wrote: > > Hi Volker, > > On Mon, Oct 22, 2018 at 10:57 AM Volker Dobler <[email protected] > <javascript:>> wrote: > >> The Go 2 draft generics draft has been discussed a lot, >> especially contracts have drawn a lot of attention and >> other ways to limit the set of possible type were suggested. >> >> Most discussions orbited around very basic polymorphic >> functions like polymorphic Min or a Map functions. I do consider >> a polymorphic Min function to be nothing more than a >> litmus test to generics: If a generic/polymorphic Min cannot >> be written the proposal is insufficient. But I probably would >> never write a polymorphic Min as a type specific Min is >> 3 lines and basically impossible to get wrong and just because >> Min looks nice under a proposal does not mean that the >> proposed solution will lead to good code where generic or >> polymorphic code would actually be beneficial: For complicated >> data structures and algorithms. >> >> At least the original proposal mentions a generic Graph >> data structure. Still without showing how e.g. DFS, BFS, >> Shortest Paths would be a) implemented and b) used. >> >> I think it would be good if we could see how different proposals >> (and especially the official one) would affect how generic code >> is written and used. Especially code which is hard to get right >> and really benefits from a "generic" implementation. >> >> I'd like to see generic/polymorphic: >> - Image manipulation (scaling, convolution, etc.) for various color >> models >> - Balanced trees (AVL or Red-Black) >> - Matrices of bool, int, float32/64, complex with inversion, >> LR-decomposition, eigenvalues >> - Fast Fourier Transformation (with ints, float32/64, complex64/128 and >> my float24 inputs) >> - Graph algorithms (DFS, BFS, Dijkstra, Bellman-Ford, Floyd-Warshall) >> (feel free to add stuff from your field here). >> >> How would a package graph with a generic Graph data structure >> and accompanying algorithms look like? How would I use such >> a generic algorithm with nodes of my own type? >> >> How would I be using a generic 2d FFT package when my inputs >> is complex128 and how if inputs are float32? >> >> I think that answers to these questions would be much more >> helpful in evaluating generics than the current focus on the >> syntax of Min and whether contracts can be done trough interfaces. >> >> Let's start with Dijkstra and the Graph example of the >> original proposal: How would the implementation look like >> and how would my code use this implementation? >> > > I agree. > I had started something like this, there: > - https://github.com/sbinet/go2-test/blob/master/ndarray/nd.go > (my pet peeve is inter-operability with Python's protocol buffers and > NumPy n-dim arrays in particular) > > it would be great to have a code generator that takes e.g. Go-generics > draft-proposal code, and generates Go-1 compatible code (or, at the very > least a gofmt command that can make sure the code parses ok.) > > -s >
-- 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]. For more options, visit https://groups.google.com/d/optout.
