News for hackers. Stuff that matters.

mdlayher

Re:Go generics draft design: building a hashtable on Wednesday June 17, 2020 @05:46PM (#23557163)
In this particular case, the compiler can't infer the type of V if you omit the type parameters at the call sites:

  type checking failed for main
  prog.go2:17:3: cannot infer V (prog.go2:46:27)
  prog.go2:22:3: cannot infer V (prog.go2:46:27)
But generally you are right, yes. It is able to infer K at least.
Re:Go generics draft design: building a hashtable on Wednesday June 17, 2020 @05:24PM (#23556963)
Oh wow, for some reason I totally zoned out and finally understand what you mean. Yes, you're right! I should fix that.
Re:Go generics draft design: building a hashtable on Wednesday June 17, 2020 @04:35PM (#23556416)
Yep that is true. I wanted both values to be comparable for an easy demo but would write it as you've suggested if I intended to make this a general purpose package.
Re:Go generics draft design: building a hashtable on Wednesday June 17, 2020 @03:49PM (#23555890)
I like the idea, I just haven't given it a try with the new draft yet. Sounds like it's worth exploring at the very least.
Re:Go generics draft design: building a hashtable on Wednesday June 17, 2020 @03:47PM (#23555867)
The alternative is to do something like:

type Int int

func (i Int) Hash() uintptr { /* do the hash */ }

But I didn't want to deal with it in this code. I agree that it isn't optimal and would be curious to see if the situation can be improved.

Re:Go generics draft design: building a hashtable on Wednesday June 17, 2020 @03:43PM (#23555819)
Right, but you can only write strings or bytes to the hash, not integers, booleans, structs, etc. So the problem remains.
Re:Go generics draft design: building a hashtable on Wednesday June 17, 2020 @03:42PM (#23555806)
Exactly. Thanks!
Re:Implementing a network protocol in Go on Tuesday September 04, 2018 @04:18PM (#17912413)
Hey folks, presenter here! Happy to answer any questions you all may have, and thanks again to Sourcegraph for the live blog!