Merge pull request #281 from sebras/master
[jackhill/mal.git] / es6 / env.js
CommitLineData
732f2170 1export function new_env(outer={}, binds=[], exprs=[]) {
4f8c7db9 2 var e = Object.setPrototypeOf({}, outer)
732f2170
JM
3 // Bind symbols in binds to values in exprs
4 for (var i=0; i<binds.length; i++) {
4f8c7db9
JM
5 if (Symbol.keyFor(binds[i]) === "&") {
6 e[binds[i+1]] = exprs.slice(i) // variable length arguments
7 break
732f2170 8 }
a05c086f 9 e[binds[i]] = exprs[i]
732f2170 10 }
4f8c7db9 11 return e
732f2170 12}
4f8c7db9 13export const env_get = (env, sym) => {
a05c086f
JM
14 if (sym in env) { return env[sym] }
15 throw Error(`'${Symbol.keyFor(sym)}' not found`)
5024b694 16}
4f8c7db9 17export const env_set = (env, sym, val) => env[sym] = val