Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
The Typed Racket Optimizer vs. Transient (neu.edu)
31 points by lelf on Jan 18, 2020 | hide | past | favorite | 11 comments


Tl;dr should've just gone fully statically typed from the start. Integrating typed and unityped code is a pain and brings low performance. But Lispers believe in their (lambda x (x x)) and look down on static typing. There was one good Lisp, Lux lang, but it went unnoticed, which is a shame because it's much better than Clojure.


> There was one good Lisp, Lux lang, but it went unnoticed

Not sure why you're saying "was", seems the language is still being worked on...

> which is a shame because it's much better than Clojure.

Seems Lux lang is inspired by Clojure (and others), and the compiler being implemented in Clojure. What's the main differences that makes Lux much better than Clojure?


Was because it never caught on. It's worked on by a single person not working full time... Pretty much deadware, unfortunately.

And the main Haskell compiler is implemented in C. In fact, Haskell is represented at one stage of compilation by a C-like language called Cmm. Would it be fair to say that Haskell was inspired by C? What are the main differences that make Haskell much better than C?


I've never heard of the term "deadware," especially not applied to an active project.

That being said the custom (non-commercial) license can't be helping adoption!


The main Haskell compiler (GHC) is not written in C. It's written in Haskell. There is a small runtime written in C.


Yeah, you're correct. The runtime matters more than tge compiler, though, so Haskell must be real close to C.


Clojure is pretty much a one man job as well. I'd say its more because Lux is still an incomplete language, it isn't ready to catch on yet, since its still beta. But if it reached maturity it could.

You could help contribute to it and accelerate that process and its adoption?

I'm also not sure of your analogy, Lux says on its readme that its syntax and overall look and feel was inspired by Clojure. The fact it's implemented in Clojure is just showing Lux is a much newer language, give it some time.


I'm not trying to say you're wrong, I'm interested in hearing the actual differences between Lux and Clojure, as you see it.


Clojure has only one type. Lux lets you define and declare however many types you want, which is more humane. Clojure is a PITA language where they even have a compiler setting that warns you when the interop with Java requires reflection calls which slow down your code. So get this, Clojure takes away your right to define and see proper types, but it still forces you to declare a half-assed, counter-intuitive version of those types whenever you interop with Java (ie almost always), or your code is going to grind to a standstill. Yet when you deal with other people's Clojure code, you get no types, so it's back to guessing about what their code does. And all of that because Rich Hickey hasn't the slightest understanding of type systems (and I know, I've listened to several of his talks, this without falling asleep).


I see. I guess we have very different experience with Clojure as I'm not hitting these issues at all, because almost none of the code I write is doing interop with Java itself and I probably write 70% ClojureScript rather than Clojure.

I could understand if you want a sound type system, that Clojure is far off from that. Thanks for explaining!

I'm guessing you already seen and maybe played around with clojure.spec as well. Do you see it helping anything or it's a lost cause because you want compile-time typing?


Pretty sure both Common Lisp and Clojure use static types for performance. And as far as I know, they and Haskell are pretty much in the same ballpark when it comes to performance.

I can understand you wanting static type checks for auto-complete, refactoring and minor correctness checks, but I don't think performance plays into it.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: