Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Options :) But generics :(

I'm really hopping that Golang finds a way to either not add generics, or add them in contrained ways. Your example code for generics are very hard to read for example.

Rust somehow tackles that with associated types, but since generics are still allowed it's not great imo.



Always interested in feedback, thanks.

Why do you find them unreadable, because of the angle brackets?

I've considered using

  struct Repo ⟨T⟩ {
    db DB
  }
Instead of

  struct Repo <T> {
    db DB
  }
The conversion would be done automatically by vfmt.


Because they are too general.

The ultimate test is to read someone else's code and try to figure out what is the actual struct being used in place. You will see that you often have to jump through many many files in order to get a sense of what is actually used in place. This problem becomes even harder when people start nesting generics.

Take a look at associated types in Rust. I think it is a better way to do generics because it forces you to specify the type early. It also prevents nested types that are hard to read like <T<A, Cat<B>>> (and this is nothing)


I see, thanks. Right now V supports generics with only one type T anyway :)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: