gomacro
gomacro copied to clipboard
Interactive Go interpreter and debugger with REPL, Eval, generics and Lisp-like macros
### case ``` package main import ( "github.com/cosmos72/gomacro/fast" ) func main() { // case1() // as expected // case2() // panic: reflect: call of reflect.Value.Interface on zero Value // case3()...
Add generics
This is a complex and challenging task. The idea is to use gomacro as a playground to experiment with Go language extensions, since in many cases it's much easier to...
integrate with https://github.com/go-rod/rod
**What information does an external contributor need to fix this specific issue**; such that **pre-installed Go modules (by this user; before runtime)** can be used by the interpreter at runtime...
The following code produces `cannot use as in argument to switchTo`: ```go package main import ( "github.com/cosmos72/gomacro/fast" ) func main() { interp := fast.New() interp.Eval(` import "fmt" type Scene interface...
Not sure why this wasn't causing issues at the time of #101. Also, I _think_ the bounds check isn't necessary in this case because the `Int64Val` would have already done...
Go 1.17 introduces a small but useful [new language feature](https://golang.org/ref/spec#Conversions_from_slice_to_array_pointer): > Converting a slice to an array pointer yields a pointer to the underlying array of the slice. If the...
Given the following basic macro definition ``` :import ( "fmt" "go/ast" ) :macro myMacro(arg ast.Node) ast.Node { fmt.Printf("arg has type %T\n", arg) return ~'{1} } ``` When applied directly in...
Thoughts on creating a user forum? A mailing list, slack channel, disord, gitter, or whatever. That way community members can help each other and discuss ideas.
Right now, the tab complete requires that you tab through to see options. `fmt.`+`tab,tab,tab,tab,shift+tab`. That is a fantastic start. It would be even more awesome if a dropdown showed up...