emacs-lisp-style-guide icon indicating copy to clipboard operation
emacs-lisp-style-guide copied to clipboard

Prefer `nil` for empty lists over `()` or `'()`

Open Fuco1 opened this issue 7 years ago • 2 comments

There are essentially 5 ways to "initialize" a list

(let (results)
  (--each ... (push x results)))

(let ((results))
  (--each ... (push x results)))

(let ((results nil))
  (--each ... (push x results)))

(let ((results ()))
  (--each ... (push x results)))

(let ((results '()))
  (--each ... (push x results)))

Personally I use 2 and 3 and prefer 2 if there are multiple bindings at the same time

(let ((x 1)
      (y 2)
      (results)
      (z 3))
  (--each ... (push x results)))

Having it wrapped in the parens sort of signifies to me it's a list. A nil there wouldn't hurt though, I'm just lazy.

I was hoping there would be some way to distinguish () and nil for example for the purpose of analysis but they both appear as nil to the reader, so meh.

Fuco1 avatar Aug 28 '18 12:08 Fuco1

I generally go with option 2, as then it's easy to add more non-empty elements to the bindings, but I agree that 3 & 4 definitely read better. I'm fine with suggesting the use of nil, although I don't think we should discourage ().

bbatsov avatar Aug 28 '18 16:08 bbatsov