Data Abstraction


(load "record.ss")

(define-record empty-ff ())

(define-record extended-ff (sym val ff))

(define create-empty-ff
  (lambda ()
    (make-empty-ff)))

(define extend-ff
  (lambda(sym val ff)
    (make-extended-ff sym val ff)))

(define apply-ff
  (lambda (ff symbol)
    (variant-case ff
      [empty-ff ()
	(error 'empty-ff "No association found")]
      [extended-ff (sym val ff)
	(if (eq? sym symbol)
	    val
	    (apply-ff ff symbol))]
      [else (error
	      'apply-ff "Invalid finite function")])))

;;
;(define create-empty-ff make-empty-ff)


;(define extend-ff make-extended-ff)

    

Sushil Louis
Last modified: Mon Nov 1 10:34:10 PST 1999