cat hello.gsp (ns main "/fmt" "/net/http")
(def hello (fn [w r]
(fmt/fprintf w "hello")
()))
(def main (fn []
(http/handle-func "/" hello)
(http/listen-and-serve ":8080" nil)))
gisp hello.gsp package main
import (
"/fmt"
"/net/http"
)
func hello(w, r core.Any) core.Any {
fmt.Fprintf(w, "hello")
return nil
}
func main() {
http.HandleFunc("/", hello)
http.ListenAndServe(":8080", nil)
}
(Which go won't compile due to errors with imports, missing core.Any
etc).I realize hn isn't the best place to discuss issues, but if anyone have played with gisp, and could shed some light (eg: maybe gisp is go 1.4 only?) that'd be great.
Incidentlially gsp/gspc seems to work as intended. Maybe I'm misunderstanding the purpose of gisp?
If you continue to have issues and want to get it working correctly, feel free to email me.
After some tweaking I couldn't get [f] to work with gsp (but it worked fine with gisp + go build). Looks like both projects could use some more (esp. motivating) examples, and maybe a little more introduction/documentation. At least enough to encourage play :-)
[f] https://github.com/jcla1/gisp/blob/master/examples/factorial...
Gisp lacked the ability to have function arguments actually be functions themselves. Gsp gets around this by casting __all__ (a lazy move, I know) functions to interface{} then to func([arg core.Any]+) core.Any.
I do stop this behavior for a certain whitelist - I need to add int/float64/bool/string to that list I think.
This was definitely just a first step. I think getting the Prelude to work is by far the coolest part. It did actually take a lot of trial and error hacking gisp -> gsp to get it working.
After this I will probably look into self-hosting documentation and maybe a cookbook.
Btw, I'm still not sure what "prelude" means in this context...