From b8ee29b22fbaa7a01f2754b4d6dd9af52e02017c Mon Sep 17 00:00:00 2001 From: Joel Martin Date: Thu, 18 Dec 2014 20:33:49 -0600 Subject: All: add keywords. Also, fix nth and count to match cloure. --- go/src/step3_env/step3_env.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'go/src/step3_env') diff --git a/go/src/step3_env/step3_env.go b/go/src/step3_env/step3_env.go index 0d975ba..0c45bf2 100644 --- a/go/src/step3_env/step3_env.go +++ b/go/src/step3_env/step3_env.go @@ -23,7 +23,7 @@ func READ(str string) (MalType, error) { func eval_ast(ast MalType, env EnvType) (MalType, error) { //fmt.Printf("eval_ast: %#v\n", ast) if Symbol_Q(ast) { - return env.Get(ast.(Symbol).Val) + return env.Get(ast.(Symbol)) } else if List_Q(ast) { lst := []MalType{} for _, a := range ast.(List).Val { @@ -83,7 +83,7 @@ func EVAL(ast MalType, env EnvType) (MalType, error) { case "def!": res, e := EVAL(a2, env) if e != nil { return nil, e } - return env.Set(a1.(Symbol).Val, res), nil + return env.Set(a1.(Symbol), res), nil case "let*": let_env, e := NewEnv(env, nil, nil) if e != nil { return nil, e } @@ -95,7 +95,7 @@ func EVAL(ast MalType, env EnvType) (MalType, error) { } exp, e := EVAL(arr1[i+1], let_env) if e != nil { return nil, e } - let_env.Set(arr1[i].(Symbol).Val, exp) + let_env.Set(arr1[i].(Symbol), exp) } return EVAL(a2, let_env) default: @@ -127,13 +127,13 @@ func rep(str string) (MalType, error) { } func main() { - repl_env.Set("+", func(a []MalType) (MalType, error) { + repl_env.Set(Symbol{"+"}, func(a []MalType) (MalType, error) { return a[0].(int) + a[1].(int), nil }) - repl_env.Set("-", func(a []MalType) (MalType, error) { + repl_env.Set(Symbol{"-"}, func(a []MalType) (MalType, error) { return a[0].(int) - a[1].(int), nil }) - repl_env.Set("*", func(a []MalType) (MalType, error) { + repl_env.Set(Symbol{"*"}, func(a []MalType) (MalType, error) { return a[0].(int) * a[1].(int), nil }) - repl_env.Set("/", func(a []MalType) (MalType, error) { + repl_env.Set(Symbol{"/"}, func(a []MalType) (MalType, error) { return a[0].(int) / a[1].(int), nil }) // repl loop -- cgit v1.2.3