Implementation of cons

Conceptually, cons is implemented by removing a pair cell from the heap or free storage list and replacing its car and cdr pointers with the desired values. The following is a simple implementation of cons:


(define (cons x y)
  (if (null? *freelist*)
      (or (garbage-collect)
          (get-more-memory)
          (error "out of space") ) )
  (let ((pair *freelist*))
    (set! *freelist* (cdr *freelist*))
    (set-car! pair x)
    (set-cdr! pair y)
    pair))

Contents    Page-10    Prev    Next    Page+10    Index