aboutsummaryrefslogtreecommitdiff
path: root/go/src/env
diff options
context:
space:
mode:
authorMiki Tebeka <miki.tebeka@gmail.com>2015-03-01 05:57:02 +0200
committerMiki Tebeka <miki.tebeka@gmail.com>2015-03-01 05:57:02 +0200
commit978af8a768be2ed4b0be249a2e87744d0ba8307d (patch)
treef10a81f4e874716898af755d9c5b21b85fc606c6 /go/src/env
parent1218ce98a40ef243824fed0efce7160a10fe5f36 (diff)
downloadmal-978af8a768be2ed4b0be249a2e87744d0ba8307d.tar.gz
mal-978af8a768be2ed4b0be249a2e87744d0ba8307d.zip
running "gofmt" on the code
Diffstat (limited to 'go/src/env')
-rw-r--r--go/src/env/env.go80
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
}