scsh-0.5/alt/locations.scm

31 lines
907 B
Scheme

; Copyright (c) 1993, 1994 Richard Kelsey and Jonathan Rees. See file COPYING.
; Locations
(define location-rtd
(make-record-type 'location '(id defined? contents)))
(define-record-discloser location-rtd
(lambda (l) `(location ,(location-id l))))
(define make-undefined-location
(let ((make (record-constructor location-rtd
'(id defined? contents))))
(lambda (id)
(make id #f '*empty*))))
(define location? (record-predicate location-rtd))
(define location-id (record-accessor location-rtd 'id))
(define location-defined? (record-accessor location-rtd 'defined?))
(define contents (record-accessor location-rtd 'contents))
(define set-defined?! (record-modifier location-rtd 'defined?))
(define (set-location-defined?! loc ?)
(set-defined?! loc ?)
(if (not ?)
(set-contents! loc '*empty*)))
(define set-contents! (record-modifier location-rtd 'contents))