previous | index | next

Cons Mutators

Hidden from you so far has been Scheme's ability to change the car or cdr of a cons:
     (define my-list '(1 2 3))
     my-list ⇒ (1 2 3)

     (set-car! my-list 'foo)
     my-list => ⇒ (foo 2 3)

     (set-cdr! my-list '(bar baz))
     my-list => ⇒ (foo bar baz)
So an implementation of linked nodes in Scheme:
     (define make-node cons)
     (define node-element car)
     (define node-rest cdr)
     (define node-set-element! set-car!)
     (define node-set-rest! set-cdr!)

previous | index | next