I love the idea behind this project. The clean and intuitive project structure and layout is exemplary.
At present the emitted go code is quite nasty looking [for human-readable purposes :D]. Not meant as a complaint, just an observation.
For an example of what the outputted go code looks like check out https://github.com/hraberg/cljs2go/blob/master/cljs/core/cor...
My understanding of ClojureScript is that it's Clojure syntax for a simple single threaded environment (probably an oversimplification), but with Golang you have a lot more reach in terms of concurrency.
Please forgive me if I haven't phrased this very well. I certainly don't mean to put a negative spin on this or anything; I'm just curious.
What is the difference between a transpiler and a compiler?
Compiling is a more generic term that includes transpiling, but is usually used to mean the kind that transforms into assembly/bytecode/executables.
Edit: Since I have no interest in furthering a thread on a legitimate question, let me just answer to the replies here: There is no reason to make the difference other than pickiness, and there is no legitimate claim as to what is or isn't high level. Use your common sense, computers don't care whether it's a transpiler or compiler.
Is Assembly high level? In that case GCC would be a transpiler, not a compiler.
What about C? If C is considered high level, the original C++ compiler would have to be considered a transpiler rather than a compiler. Same goes for Chicken Scheme, or any of the other compilers that target C.
If we take the example even further, what about Fog Creek's Wasabi, which compiles to either PHP or VBScript? Or Ruby's compiler, which takes Ruby source and outputs very high level bytecode.
I don't think there's much value in distinguishing 'transpilers' from compilers. It's still the exact same principles at play, no matter what your source or target languages are.