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