Hacker News new | past | comments | ask | show | jobs | submit login

>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

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 ?




cringe.

How ecactly is having to check twice the amount of cases an improvement (note btw, that checking for Left/Right is doing it wrong)?


You only have to check 1 case in Go (`if err != nil { ... }`). What language lets you check half a case?


  (int64, error)
gives you exactly four possibilities.

Either gives you exactly the two you want.


Please feel free to enumerate them.


  (value, no error)
  (value, error)
  (no value, error)
  (no value, no error)


The 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.


The fact that it's a convention, and not a compiler error is the entire issue at debate here.


There is no "no value" representation for int64. The only two cases are "<int64>, nil" or "<int64>, <error>".




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

Search: