One thing seems off in that description: If the end of the list is represented as pointer to pair of nils then the last element of a list cannot contain nil. The traditional LISP representation is simply a nil pointer for end. '() is nil (NULL in C.)
[1] https://github.com/mntmn/interim/blob/master/sledge/alloc.c#...