: cons ( y x -- pair ) 2 cells allocate throw dup >r 2! r> ; : >car ( pair -- first-addr ) ; immediate : >cdr ( pair -- second-addr ) cell+ ; : car ( pair -- first ) >car @ ; : cdr ( pair -- second ) >cdr @ ; : linked-list ( -- list ) nil nil cons ; : add-node ( list node -- ) over @ swap cons swap ! ;