Ian Denhardt <[email protected]>:
> Quoting Eric S. Raymond (2018-10-19 16:15:25)
> > Ian Denhardt <[email protected]>:
> > > What would code making use of a `Sortable` type look like? If you can't
> > > actually use "implements <" to overload `<`, it's not clear to me what
> > > it would actually do?
> >
> > Be available to a Sort function. That is, the requirement "Have a Less()"
> > would be replaced by "Have an implements-< method".
> >
> > How this is specified at the callsite is a separate question. I can't
> > see any simpler way to do it than writing '<', but if anyone hates
> > overloading enough to invent a syntax they can do it ab nd
> > I won't complain.
> >
> > I'm saying I'd prefer that future to heavyweight contracts. Surface
> > overloading is *not* the important thing about "implements"; having a
> > lightweight way to refer to typeclasses like "Sortable" is.
>
> Ah, so are you just suggesting you'd be able to do (e.g.):
>
> func SortSlice(type T implements <)(slice []T) {
> // ...
> }
>
> ..but not actually be able to redefine `<` for a user-defined type?
Something like that. Only why require (type T implements <)? The compiler
can figure out whether T implements < or not and throw an error if it doesn't.
Somewhere inside the generic Sort we'd need a way to say "plug in T's
implementation of < here." That's the callsite I was thinking of. The
simplest and most obvuius way to do that is to bite the operator-overloading
bullet and say "<", but I'm saying I could live with some magic syntax to
avoid that if the allergy to operator overloading is insuperable.
I'm in kind of a weird position here, because I want us to do the simplest
possible thing but recognize that there's allergy to it going around.
--
<a href="http://www.catb.org/~esr/">Eric S. Raymond</a>
My work is funded by the Internet Civil Engineering Institute: https://icei.org
Please visit their site and donate: the civilization you save might be your own.
--
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.