It makes me nervous to make foldLeft a method on something that may intentionally be null because foldLeft should be valid on an empty list. Future maintainers could easily step into an lurking NPE (assuming there isn't one there already). What if foldLeft was a method on the NList object instead, and took the NList as an argument?