Working with lists without nil(or '()) will be similar to performing arithmetic without zero. Using only pairs without nil, how would we represent an empty list, or a singleton list '(1)?
Deteriorating: since lists should not be lists of atoms, but may contain other lists, how do we present a nested list '(1 2 (3 4))? If we perform the following transformations:
'(3 4) => '(3 . 4)
'(1 2 x) => '(1 . (2 . x)) == '(1 2 . x)
we get:
'(1 2 (3 4)) => '(1 . (2 . (3 . 4))) == '(1 2 3 . 4)
But also:
'(1 2 3 4) => '(1 . (2 . (3 . 4))) == '(1 2 3 . 4)
, nil , , . , , , .
: , first, , rest, , . , , rest , . , , pair?, . nil , , , 1, '(1), '((1)) ..