Didn't expect to read something so enlightening.<p>I particularly liked the emphasis made on the difference between total functions and partial functions. It explains really well how errors could be managed either by using sentinel values or by throwing errors, the advantages of null, the problems about it, and how Monads can help it.