Isn't hy also a lisp for Python? What's the difference here?
Lisp Community
A community for the Lisp family of programming languages.
Lisp (historically LISP) is a family of programming languages with a long history and a distinctive, fully parenthesized prefix notation. Originally specified in 1958, Lisp is the second-oldest high-level programming language. Only Fortran is older, by one year.
History
- History of Lisp - John McCarthy's history of 12 February 1979.
- History of LISP at the Computer Histroy Museum
Associations and meetings
Resources - TODO
Related communities (dialects) - TODO
As @[email protected] mentioned, they differ in implementation:
- The Hy compiler works by reading the Hy source code into Hy model objects and compiling the Hy model objects into Python abstract syntax tree (ast) objects. In other words, at runtime it is essentially Python source code. Similar to Typescript and CoffeScript (JS).
- Basilisp is hosted on the Python virtual machine, so its compiler generates native Python bytecode. Similar to Clojure and Scala (Java/JVM) or Elixir (Erlang/BEAM).
Personally in these cases, I prefer the second approach, because the first one is basically "syntactic sugar": a Python lispy syntax (embedded), on the other hand Basilisp is a "more complete implementation", that is, a language independent of the host language with all the strengths and weaknesses of its host system/VM.
I agree, the second approach is more direct, so the only limitation comes from the properties of the VM itself. Transpiling to Python means also inheriting semantic quirks of the intermediate language. It makes sense for ClojureScript to do it, since js is the layer that browsers expose, but if you have the option to target the VM bytecode directly then that's a much better option.
Exactly, The transpilers are necessary when the target system only works exclusively with a single language.
I think it's the same idea, but different implementation.