diff options
| author | Joel Martin <github@martintribe.org> | 2014-10-09 22:10:15 -0500 |
|---|---|---|
| committer | Joel Martin <github@martintribe.org> | 2015-01-06 21:57:02 -0600 |
| commit | 1771ab50b87c745181e4e30f94b63e3f23d33dac (patch) | |
| tree | c1c9b5d80ba9261c5f16bab1b52c1bb0f559407c /go/src/step6_file | |
| parent | f2544a9467ea032aff505b3ced3b4b3510a828fe (diff) | |
| download | mal-1771ab50b87c745181e4e30f94b63e3f23d33dac.tar.gz mal-1771ab50b87c745181e4e30f94b63e3f23d33dac.zip | |
go: update README. Backport Func usage.
Diffstat (limited to 'go/src/step6_file')
| -rw-r--r-- | go/src/step6_file/step6_file.go | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/go/src/step6_file/step6_file.go b/go/src/step6_file/step6_file.go index 51fe3cb..748d158 100644 --- a/go/src/step6_file/step6_file.go +++ b/go/src/step6_file/step6_file.go @@ -134,9 +134,9 @@ func EVAL(ast MalType, env EnvType) (MalType, error) { env, e = NewEnv(fn.Env, fn.Params, List{el.(List).Val[1:],nil}) if e != nil { return nil, e } } else { - fn, ok := f.(func([]MalType)(MalType, error)) + fn, ok := f.(Func) if !ok { return nil, errors.New("attempt to call non-function") } - return fn(el.(List).Val[1:]) + return fn.Fn(el.(List).Val[1:]) } } @@ -165,10 +165,10 @@ func rep(str string) (MalType, error) { func main() { // core.go: defined using go for k, v := range core.NS { - repl_env.Set(k, v) + repl_env.Set(k, Func{v.(func([]MalType)(MalType,error)),nil}) } - repl_env.Set("eval", func(a []MalType) (MalType, error) { - return EVAL(a[0], repl_env) }) + repl_env.Set("eval", Func{func(a []MalType) (MalType, error) { + return EVAL(a[0], repl_env) },nil}) repl_env.Set("*ARGV*", List{}) // core.mal: defined using the language itself @@ -182,7 +182,10 @@ func main() { args = append(args, a) } repl_env.Set("*ARGV*", List{args,nil}) - rep("(load-file \"" + os.Args[1] + "\")") + if _,e := rep("(load-file \"" + os.Args[1] + "\")"); e != nil { + fmt.Printf("Error: %v\n", e) + os.Exit(1) + } os.Exit(0) } |
