3 var _data StringMap<MalVal> = {}
9 def new(outer Env, binds List<MalVal>, exprs List<MalVal>) {
11 for i in 0..binds.count {
12 const name = (binds[i] as MalSymbol).val
14 const restName = (binds[i + 1] as MalSymbol).val
15 _data[restName] = MalList.new(exprs.slice(i))
18 _data[name] = exprs[i]
23 def find(key MalSymbol) Env {
24 if key.val in _data { return self }
25 return _outer?.find(key)
28 def get(key MalSymbol) MalVal {
30 if env == null { throw MalError.new("'" + key.val + "' not found") }
31 return env._data[key.val]
34 def set(key MalSymbol, value MalVal) MalVal {
35 _data[key.val] = value