#lang typed-scheme (define-struct: Environment ((parent : (Option Environment)) (bindings : (HashTable Symbol Integer))) #:mutable) (: make-empty-env (case-lambda [-> Environment] [Environment -> Environment])) (define make-empty-env (case-lambda: [() (make-Environment #f (make-hasheq))] [((parent : Environment)) (make-Environment parent (make-hasheq))]))