It wasn't until I wrote a Scheme interpreter that I really understood the relationship between lists and cons cells.