3 ms·
Nils are a very bad code smell. They come from C's null, which is a billion dollar mistake[1], according to its creator: Tonny Hoare. Specially now that we have
by DanielRibeiro 15y ago
Nils are a very bad code smell. They come from C's null, which is a billion dollar mistake[1], according to its creator: Tonny Hoare. Specially now that we have monads[2, 3].
Scala's standard library provides very helpful information on how to replace null with its Maybe class (called Option in Scala). Just take a peek into their collections library[4], and search for Option.
[1] http://www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake-Tony-Hoare http://www.infoq.com/presentations/Null-References-The-Billi...
[2] http://moonbase.rydia.net/mental/writings/programming/monads-in-ruby/00introduction.html http://moonbase.rydia.net/mental/writings/programming/monads...
[3] http://andand.rubyforge.org/ http://andand.rubyforge.org/
[4] http://www.scala-lang.org/api/current/scala/collection/immutable/Iterable.html http://www.scala-lang.org/api/current/scala/collection/immut...
- aphyr 15y agoNils are a very bad code smell. They come from C's null, which is a billion dollar mistake[1], according to its creator: Tonny Hoare. Specially now that we have monads[2, 3]. Do you have a source for this? I was under the impression nil was directly taken from Smalltalk, which derived it from Lisp.
- DanielRibeiro 15y agoWikipedia[1] has the refs: The null reference was invented by C.A.R. Hoare in 1965 as part of the Algol W language. Hoare later (2009) described his invention as a "billion-dollar mistake":[10][11] [1] http://en.wikipedia.org/wiki/Null_pointer#Null_pointer http://en.wikipedia.org/wiki/Null_pointer#Null_pointer Where: [10] http://qconlondon.com/london-2009/presentation/Null+References:+The+Billion+Dollar+Mistake http://qconlondon.com/london-2009/presentation/Null+Referenc... [11] http://www.infoq.com/presentations/Null-References-The-Billion-Dollar-Mistake-Tony-Hoare http://www.infoq.com/presentations/Null-References-The-Billi... Yes, the same video I linked above.
- aphyr 15y agoNil was a part of Lisp 1, which is why I was confused. It predates Algol W by seven years. As null references and nil are somewhat different beasts, I'm not sure the criticism "billion dollar mistake" applies fully.