4 ms·
The compiler provides you no help at all with them, and no syntax that makes error conditions and handling separate. It also mixes application logic and recover
by PeCaN 10y ago
The compiler provides you no help at all with them, and no syntax that makes error conditions and handling separate. It also mixes application logic and recovery logic.
Basically everything that's problematic with returning a status int in C, but all new, hip, and backed up by Rob Pike's pseudointellectual bullshit and a bunch of Silicon Valley 20somethings.
They could at least, you know, have an Either type or something. Anything?
- Artemis2 10y agoDon't forget Brian Kernighan and Ken Thompson!
- pjmlp 10y agoYes, but at least they are making the tools we may eventually have to rely on due to market pressure (Docker, K8s, ...) in Go instead of C.
- leaveyou 10y ago>It also mixes application logic and recovery logic. When did this separation become law ? What if the "application logic" requires recovery ? >They could at least, you know, have an Either type or something (int64, error) in func ParseInt() (int64, error) is your Either type. And checking if you got the "left or the right side of the Either" is IMHO much shorter and clearer than in Scala. https://golang.org/pkg/strconv/#ParseInt https://golang.org/pkg/strconv/#ParseInt http://www.scala-lang.org/api/rc2/scala/Either.html http://www.scala-lang.org/api/rc2/scala/Either.html >backed up by Rob Pike's pseudointellectual bullshit and a bunch of Silicon Valley 20somethings Why the ad hominems ?
- premium-concern 10y agocringe. How ecactly is having to check twice the amount of cases an improvement (note btw, that checking for Left/Right is doing it wrong)?
- weberc2 10y agoYou only have to check 1 case in Go (`if err != nil { ... }`). What language lets you check half a case?
- premium-concern 10y ago(int64, error) gives you exactly four possibilities. Either gives you exactly the two you want.
- weberc2 10y agoPlease feel free to enumerate them.
- premium-concern 10y ago(value, no error) (value, error) (no value, error) (no value, no error)
- leaveyou 10y agoThe convention is that if the err == nil then the value is not nil. The exceptions to this rule are very few and usually specified in the documentation. Normally you only have to check for error.
- bluejekyll 10y agoThe fact that it's a convention, and not a compiler error is the entire issue at debate here.
- weberc2 10y agoThere is no "no value" representation for int64. The only two cases are "<int64>, nil" or "<int64>, <error>".