There is a language called Icon that returns the success of an operation along with any return value. This would allow searching for an element in a list that is not there to fail (and return no value) or to succeed (and return a value). You your flow of control is based around the success of an operation rather than the value it returns. I'm not sure that the language even had nulls (or anything of that sort) but even if it did have you did not need to reference them in any way.
It was a very nice language.