1
2
Fork
You've already forked Joe
0
Lisp syntax for Go, like Fennel for Lua
  • Janet 100%
Find a file
2026年06月04日 01:53:05 -06:00
joe.janet Handle imports 2026年06月04日 01:53:05 -06:00
readme.md Handle imports 2026年06月04日 01:53:05 -06:00
test.janet Handle imports 2026年06月04日 01:53:05 -06:00

Joe

Joe dreams of being to Go as Fennel to Lua: lisp syntax on top of Go semantics allowing macros etc. on Go's relatively highly performant runtime with strong library support.

Questions:

  • How to best handle non-go things like map?
  • How to best utilize Lisp macros etc. into the generated code
  • How will performance differ (e.g. for the verse reader)?
  • How to handle types?
  • How to handle CLI, having things in and out of main etc.? Namely, must handle imports properly (via add-boilerplate)
  • How to test?

Points:

  • Go || redefined to or
  • source code files run like janet joe.janet lol.jgo should have direct s-expr (fmt.Println (map + (range 5))) without '[...]
  • janet joe.janet "lol.jgo" -o "program"

Usage:

Given the file lol.jgo:

(:=items(range5))(fmt.Println"The items are:"items)(:=result(+10(*25)))(if(>result15)(fmt.Println"Big number!")(fmt.Println"Small number!"))

we may:

  • janet joe.janet -r "lol.jgo" to run the code
  • janet joe.janet "lol.jgo" -o "program" to compile to a go binary
  • janet joe.janet -s "lol.jgo" to print the go code