I'm definitely not done, and multiple return values are one of the points I'm not fully decided yet (this is a v0.1 after all). Interaction with channels are on the roadmap, and concurrency can be done in the Go host to run different execution contexts.
It would have been simpler to just make "dynamically typed Go".
The preamble before `if` is mainly because the variables are function-scoped anyway, but again, a lot of things may change, this is the very first step in a long iteration process, and the feedback I'm getting today from the various forums will help a lot in knowing how to steer the ship.
Such a language could be used as a REPL and dynamic debugging environment for Go. That would be utterly fantastic.
Personally, though, if I wanted a Lua for Go, I'd just use Lua (or maybe LuaJIT).
We concluded, however, that the best option would be to write a Go interpreter (in Go of course). One of the key reasons why is to maintain full compatibility with Goroutines and channels.
I never got started on that project though... too many others need finishing. Bravo on publishing your vision!
1. fmt.Printf("%f", 1.0 / -0.0);
2. x := -0.0; fmt.Printf("%f", 1.0 / x);
3. x := 0.0; fmt.Printf("%f", 1.0 / -x);
Otto (JavaScript interpreter): https://github.com/robertkrimen/otto
Twik (Scheme like): http://blog.labix.org/2013/07/16/twik-a-tiny-language-for-go