4 ms·
Hy is a false promise. It looks like a lisp; depending on your idea of a Platonic lisp, it may be a lisp --- but it preserves Python semantics, including its o
by JasonFruit 4y ago
Hy is a false promise. It looks like a lisp; depending on your idea of a Platonic lisp, it may be a lisp --- but it preserves Python semantics, including its odd scoping rules, and it doesn't feel like writing actual lisp. Scheme or Common Lisp simply feel more coherent, having semantics that make sense with the language.
- Kodiologist 4y agoI've been working on Hy since 2016 and I've frequently encountered, but never understood, the sentiment that Hy isn't a "real Lisp". What makes for a real Lisp? There have been dozens (hundreds?) of Lisps over the decades, and if they all have a defining characteristic that Hy lacks, I don't know what it is. Certainly Lisps have varied in how scoping works, among other things.
- mumblemumble 4y agoAgreed. If odd scoping rules are the problem, we can possibly disqualify most lisps that have ever existed. Including all of the ones that John McCarthy had a hand in building. For my part, I had similar "this doesn't feel quite like lisp" moments with both Hy and Clojure. And I ultimately realized that it's the mere presence of the base platform that gets me. With Racket, I'm used to feeling like I'm sealed off in my own lispy bubble. With Hy and Clojure, there are always bits of Python or Java (read: Not Lisp) hiding in the background. Many differences from other well-known lisps that I know are attributable to that base platform. And that's a catch-22 situation. Objectively, they might be (and, IMO, are) good design decisions. But they're also covered in non-lisp cooties. I don't know why I should expect otherwise. Brains are weird.
- quasarj 4y agoWhat is odd about Python scoping rules?
- xigoi 4y agoVariables are function-scoped, not block-scoped. So you can do this: if 2 < 3: s = "Math works" else: s = "Math doesn't work" print(s)
- robonerd 4y agoI haven't gotten into Hy, but what you say about a 'false promise' of lisp reminds me of the impression Fennel left me. No cons, compile error for '(), no quasiquoting.. it left me wondering where the list processing was.
- shirogane86x 4y agoI may be wrong about this, but having tried fennel recently, doesn't it have quasiquoting now? at least according to: https://fennel-lang.org/macros https://fennel-lang.org/macros
- giraffe_lady 4y agoFennel made a really interesting choice in rigidly sticking to the lua semantics. I think in isolation it would be a fairly bad choice, but in practice you get a drop-in replacement for lua that fixes every problem with lua. I wouldn't want any other lisp to work like it does but damn I consider that thing my savior at this point. I've come to really hate lua and fennel bails me out every time.
- robonerd 4y agoI suppose I should give Fennel another chance, since I have similar feelings towards Lua. Lack of quasiquoting particularly does sting though, using quasiquoting to construct lua tables seems like it would be nice.
- giraffe_lady 4y agoThere's also that partial implementation of the clojure stdlib in fennel that might have it. If not... it does have a macro system though I've avoided using it. Macros can be a quagmire even in popular well-documented lisps which fennel definitely is not either.
- gilch 4y agoI wonder if Hissp would be more to your taste? https://github.com/gilch/hissp https://github.com/gilch/hissp