diff options
Diffstat (limited to 'module/c/eval/environment.scm')
-rw-r--r-- | module/c/eval/environment.scm | 34 |
1 files changed, 0 insertions, 34 deletions
diff --git a/module/c/eval/environment.scm b/module/c/eval/environment.scm deleted file mode 100644 index 12eefaf7..00000000 --- a/module/c/eval/environment.scm +++ /dev/null @@ -1,34 +0,0 @@ -(define-module (c eval environment) - :use-module (srfi srfi-1) - :export (make-environment - env-set! env-ref push-frame! pop-frame!)) - -(define (make-frame) - (make-hash-table)) - -(define (make-environment) - (list (make-frame))) - -;; Returns an updated environment, linear update -(define (env-set! env key value) - ;; get handle to differentiate #f - ;; (even though #f should never be stored since it's not a C value) - (cond ((find (lambda (frame) (hashq-get-handle frame key)) env) - => (lambda (frame) (hashq-set! frame key value))) - (else (hashq-set! (car env) key value))) - env) - -(define (env-ref env key) - (cond ((null? env) - (scm-error 'misc-error "env-ref" - "~s unbound" - (list key) - #f)) - ((hashq-get-handle (car env) key) => cdr) - (else (env-ref (cdr env) key)))) - -(define (push-frame! environment) - (cons (make-frame) environment)) - -(define (pop-frame! environment) - (cdr environment)) |