Comment by gslaller
1 year ago
> func Index[S ~[]E, E comparable](s S, v E) int {
After seeing this signature, I think that Go is giving up on it's simpleness principle.
1 year ago
> func Index[S ~[]E, E comparable](s S, v E) int {
After seeing this signature, I think that Go is giving up on it's simpleness principle.
Generics can be a bit of an eye sore, but go already had reflection & I recently was mucking around bigquery's internals full of `reflect` having to read through that, & it doesn't even get backed by a type checker
`func Index(s interface{}, v interface{}) int` both has to deal with incompatible types, & the function body is going to be anything but simple
(sure, without generics most people wouldn't even write that `func Index`, but ultimately there's plenty of libraries deep in reflect that'd greatly benefit from generics)
I've also been dealing with temporal.io using interface{} everywhere, got to a point where I wrote typed wrappers using generics to have type checking for signals
I was quite upset that they introduced generics. It is slow marching into C++ like look and feel and all the eyesore that it entails.
In C# I feel you needed generics because there was no resizable array without casting from object (the Pareto 80-20 use case) and later async and Task<T> but I don’t think these problems apply to Go so it could have done without it (maybe!). Non userspace generics may be where it is at to ease suffering in places.
As a language design though Elm remains remarkably simple with parametric polymorphism (aka Generics) but it needs other design choices to do so. Elm is the Go of Haskell :-)
what does the ~ do here anyway?
type Something []string
ensure that the underlying type is a slice
Why do you need a tilda for `S ~[]E`, but not for `E comparable`?
Both are type-constraining annotations, so why two syntaxes?
4 replies →
They shot themselves in the foot when they forced themselves to add generics based on bogus surveys.
Anything reusable must be generic; that’s a cost of static typing.
Why were the surveys bogus?
Because they disagreed and thus everyone else is wrong, apparently.