diff --git a/env.go b/env.go index 4737e09..c08bc70 100644 --- a/env.go +++ b/env.go @@ -54,7 +54,7 @@ func uniqueSymbols(a []Symbol) (ret []Symbol) { func exitFunc(_ ...Expression) (Expression, error) { exit <- os.Interrupt - return NilObj, nil + return UndefObj, nil } func addFunc(args ...Expression) (Expression, error) { diff --git a/repl.go b/repl.go index dd2a999..6ae58e9 100644 --- a/repl.go +++ b/repl.go @@ -126,11 +126,13 @@ func (i *Interpreter) check() { } func (i *Interpreter) runInInteractiveMode() { + go i.checkExit() i.printTips() i.prompt.Run() } func (i *Interpreter) exitProcess() { + close(i.exit) fmt.Println("\nExiting...") os.Exit(0) }