export class Env { constructor(outer, data = {}) { this.outer = outer; this.data = data; } static set(env, key, val) { if (env.data[key] || env.outer === null) { return env.data[key] = val; } return Env.set(env.outer, key, val); } static find(env, key) { return env.data[key] || (env.outer && Env.find(env.outer, key)); } static get(env, key) { const o = Env.find(env, key); if (o === null) { throw new Error(`Not found: ${key}`); } return o; } }