previous | index | next

An ADT for Nodes

     (define make-node
       (lambda (element rest)
	 (let ((node (make-vector 2)))
	   (vector-set! node 0 element)
	   (vector-set! node 1 rest)
	   node)))

     (define node-element
       (lambda (node)
	 (vector-ref node 0)))

     (define node-rest
       (lambda (node)
	 (vector-ref node 1)))

     ; Example
     (define node (make-node 5 '()))
     (node-element node) ⇒ 5
     (node-rest node) ⇒ ()

     ; Compare:
     (define node (cons 5 '()))
     (car node) ⇒ 5
     (cdr node) ⇒ ()

previous | index | next