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

> the theoretically correct decision to be specific what you return and generic in what you accept

Yet another case of that old pitfall. Untyped nil uses the same keyword as typed nil, when they are not equal. It's an unfortunate contradiction within the language.

And it means that the entrenched practice of

    err != /* untyped */ nil
is an overly specific check (nil error is harmless whether it contains the type information or not).

Someone, somewhere has thrown at us a principle ("the theoretically correct decision") and someone else has thrown at us a conflicting principle ("err != nil is a universal idiom").

The problem: these are not principles! Both of these are decisions with tradeoffs. Who is making these decisions? Some blog authors or conference speakers? No: the team that owns the code. So, either:

- have a linter that catches *ErrX return declarations automatically,

- or, have a linter that prevents err != nil (generally: interface != nil)

Since the latter is impractical today, one needs to decide the former. Solved, isn't it?




The latter possibility connects closely to TFA, because if we have `^` notation, it can magically check for a typed nil.




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

Search: