2 ;; "Mu Lei" known as "NalaGinrut" <NalaGinrut@gmail.com>
3 ;; This file is free software: you can redistribute it and/or modify
4 ;; it under the terms of the GNU General Public License as published by
5 ;; the Free Software Foundation, either version 3 of the License, or
6 ;; (at your option) any later version.
8 ;; This file is distributed in the hope that it will be useful,
9 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
10 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 ;; GNU General Public License for more details.
13 ;; You should have received a copy of the GNU General Public License
14 ;; along with this program. If not, see <http://www.gnu.org/licenses/>.
18 (import (guile) (types)))
20 (define* (make-Env #:key (outer nil) (binds '()) (exprs '()))
21 (define _env (make-hash-table))
22 (define (_set k v) (hash-set! _env k v))
24 (or (hash-ref _env k) (and (not (_nil? outer)) ((outer 'find) k))))
25 (define (_find k) (_get k))
26 (for-each (lambda (b e) (hash-set! _env b e)) binds exprs)
32 (else (throw 'mal-error "BUG: Invalid cmd" cmd)))))