diff options
| author | Miki Tebeka <miki.tebeka@gmail.com> | 2015-03-01 05:57:02 +0200 |
|---|---|---|
| committer | Miki Tebeka <miki.tebeka@gmail.com> | 2015-03-01 05:57:02 +0200 |
| commit | 978af8a768be2ed4b0be249a2e87744d0ba8307d (patch) | |
| tree | f10a81f4e874716898af755d9c5b21b85fc606c6 /go/src/env | |
| parent | 1218ce98a40ef243824fed0efce7160a10fe5f36 (diff) | |
| download | mal-978af8a768be2ed4b0be249a2e87744d0ba8307d.tar.gz mal-978af8a768be2ed4b0be249a2e87744d0ba8307d.zip | |
running "gofmt" on the code
Diffstat (limited to 'go/src/env')
| -rw-r--r-- | go/src/env/env.go | 80 |
1 files changed, 43 insertions, 37 deletions
diff --git a/go/src/env/env.go b/go/src/env/env.go index 584c9a7..88098fc 100644 --- a/go/src/env/env.go +++ b/go/src/env/env.go @@ -1,59 +1,65 @@ package env import ( - "errors" - //"fmt" + "errors" + //"fmt" ) import ( - . "types" + . "types" ) type Env struct { - data map[string]MalType - outer EnvType + data map[string]MalType + outer EnvType } func NewEnv(outer EnvType, binds_mt MalType, exprs_mt MalType) (EnvType, error) { - env := Env{map[string]MalType{}, outer} - - if binds_mt != nil && exprs_mt != nil { - binds, e := GetSlice(binds_mt); if e != nil { return nil, e } - exprs, e := GetSlice(exprs_mt); if e != nil { return nil, e } - // Return a new Env with symbols in binds boudn to - // corresponding values in exprs - for i := 0; i < len(binds); i+=1 { - if (Symbol_Q(binds[i]) && binds[i].(Symbol).Val == "&") { - env.data[binds[i+1].(Symbol).Val] = List{exprs[i:],nil} - break - } else { - env.data[binds[i].(Symbol).Val] = exprs[i] - } - } - } - //return &et, nil - return env, nil + env := Env{map[string]MalType{}, outer} + + if binds_mt != nil && exprs_mt != nil { + binds, e := GetSlice(binds_mt) + if e != nil { + return nil, e + } + exprs, e := GetSlice(exprs_mt) + if e != nil { + return nil, e + } + // Return a new Env with symbols in binds boudn to + // corresponding values in exprs + for i := 0; i < len(binds); i += 1 { + if Symbol_Q(binds[i]) && binds[i].(Symbol).Val == "&" { + env.data[binds[i+1].(Symbol).Val] = List{exprs[i:], nil} + break + } else { + env.data[binds[i].(Symbol).Val] = exprs[i] + } + } + } + //return &et, nil + return env, nil } func (e Env) Find(key Symbol) EnvType { - if _, ok := e.data[key.Val]; ok { - return e - } else if (e.outer != nil) { - return e.outer.Find(key) - } else { - return nil - } + if _, ok := e.data[key.Val]; ok { + return e + } else if e.outer != nil { + return e.outer.Find(key) + } else { + return nil + } } func (e Env) Set(key Symbol, value MalType) MalType { - e.data[key.Val] = value - return value + e.data[key.Val] = value + return value } func (e Env) Get(key Symbol) (MalType, error) { - env := e.Find(key) - if env == nil { - return nil, errors.New("'" + key.Val + "' not found") - } - return env.(Env).data[key.Val], nil + env := e.Find(key) + if env == nil { + return nil, errors.New("'" + key.Val + "' not found") + } + return env.(Env).data[key.Val], nil } |
