Re: [go-nuts] Generics with adaptors

2018-10-16 Thread Ian Denhardt
Quoting Patrick Smith (2018-10-16 18:32:48) >The union function could verify that the two adaptors are the same, >using the == operator, and panic if not. However, this breaks down if >the adaptors, instead of being defined as struct{}, are defined as >types which don't support ==.

Re: [go-nuts] Generics with adaptors

2018-10-16 Thread Patrick Smith
On Tue, Oct 16, 2018 at 3:21 PM Ian Denhardt wrote: > Quoting Patrick Smith (2018-10-16 18:04:05) > >One way to avoid this is to supply the adaptor when the Set is > created, > >store it in the Set, and thereafter used the stored adaptor instead of > >requiring an adaptor parameter. >

Re: [go-nuts] Generics with adaptors

2018-10-16 Thread Ian Denhardt
Quoting Patrick Smith (2018-10-16 18:04:05) >One way to avoid this is to supply the adaptor when the Set is created, >store it in the Set, and thereafter used the stored adaptor instead of >requiring an adaptor parameter. This works for insert/member, but what about union, which takes

Re: [go-nuts] Generics with adaptors

2018-10-16 Thread Patrick Smith
On Tue, Oct 16, 2018 at 12:01 PM Ian Denhardt wrote: > * We don't actually need an adaptor for the zero value, since we can > just declare a variable of the generic type: > > func MyFn(type T) { > // x is the zero value, per usual initialization rules: > var x T > True. Thi

Re: [go-nuts] Generics with adaptors

2018-10-16 Thread Ian Denhardt
I write this kind of code a lot when working in Elm (whose generics are in a similar spot to the place you suggest). It's not the worst, and there various approaches in related languages use to make the "adaptors" more ergonomic. I still like the idea of using interfaces to express constraints bet

[go-nuts] Generics with adaptors

2018-10-16 Thread Patrick Smith
Yet another generics discussion at https://gist.github.com/pat42smith/ccf021193971f6de6fdb229d68215302 This one looks at what programmers would be able to do if very basic generics were added to Go, without contracts. Generic functions may not use methods or operators of their type parameters. Th