Live data from Hacker News

Lisp is still a secret weapon

kep.io

1–10 of 145 posts

Re: Lisp is still a secret weapon

#3
But we need types people! Properly static ones that can be used to encode your intentions and handle inconsistency before even running the program. And yes I know that Clojure has an optional type system. But optional means that you cannot rely on having types in the libraries that you use. So you can't fit your stuff together with their stuff and have reasonable expectations that it will work once the user does that one thing you didn't think would be a most reasonable thing to do (of course it is, what were you thinking! And tell me again why you didn't just let the computer do that thinking for you?).

Re: Lisp is still a secret weapon

#4

But we need types people! Properly static ones that can be used to encode your intentions and handle inconsistency before even running the program. And yes I know that Clojure has an optional type system. But optional means that you cannot rely on having types in the libraries that you use. So you can't fit your stuff together with their stuff and have reasonable expectations that it will work once the user does that…

One day we will find that perfect type system (and associated compiler/IDE/Interactive front end) and then everyone will take one big sigh of relief. And then we all will start fixing problems in a way that makes them stay fixed.

Re: Lisp is still a secret weapon

#5

But we need types people! Properly static ones that can be used to encode your intentions and handle inconsistency before even running the program. And yes I know that Clojure has an optional type system. But optional means that you cannot rely on having types in the libraries that you use. So you can't fit your stuff together with their stuff and have reasonable expectations that it will work once the user does that…

I fully agree.

Without types you just can't do much, or at least, if you're super good, compiler can't do much.

And most of the time you're trying to make something faster.

Re: Lisp is still a secret weapon

#6
The author almost immediately writes off Common Lisp for lack of "frictionless access to a rich ecosystem of code written in the same language as your software", then recommends Clojure. Most of the ecosystem you have access to in Clojure is, in fact, not built in Clojure, and most Clojure libraries were/are wrappers around Java or Javascript.

Footnote 1 makes no sense, suggesting that the only way to get access to "a bunch of other useful code" is to embed it into a C program and that understanding your dependencies is somehow easier in Javascript.

In reality, Quicklisp[1] offers effortless access to over 1200 libraries and programs. It's nowhere near the 200 thousand packages in npm, but the overall quality is good and these libraries cover a surprisingly large number of things.

The post tries to display Clojure as "Lisp, but with access to open source". Clojure is a fine programming language, but it's also completely different from Common Lisp. CL has high quality optimizing compilers performing extensive type checking, a powerful object system, easy access to C libraries, etc. If you need Java interop, you can just use ABCL[2].

[1]: https://www.quicklisp.org/ [2]: http://abcl.org/

Re: Lisp is still a secret weapon

#7

But we need types people! Properly static ones that can be used to encode your intentions and handle inconsistency before even running the program. And yes I know that Clojure has an optional type system. But optional means that you cannot rely on having types in the libraries that you use. So you can't fit your stuff together with their stuff and have reasonable expectations that it will work once the user does that…

One day we will find that perfect type system (and associated compiler/IDE/Interactive front end) and then everyone will take one big sigh of relief. And then we all will start fixing problems in a way that makes them stay fixed.

I agree types prevent people from shooting in their foot. Types are what make program ide friendly, and programmer friendly. Got that.

But types are also what cause us to think with in the box i.e to say powerful type hierarchies, the ones that save us from writing boiler-plate are also the ones that are difficult to understand, and in Java, somewhat weird. Not to mention they are needlessly specific - Unless you have ML style parameterized types.

Also, note that if you are working in type safe language, does not mean you can escape writing tests. You still have to write tests.

Just like human body is not all bone, though it gives structure, nor a bridge is all steel, even though that is what keeps it together, likewise I don't believe all aspects of a project should be written in a strictly and statically typed language. Dynamic types have their niche, and the nice thing about dynamic types is you are just concerned with ideas aka abstractions instead of type algebra and its mechanics.

Once you have protected your interfaces(with a type safe language), you are past "Idk what i am reading" stage, and hence in a safer place to do type agnostic things - and the sweet thing with clojure and lisps, yeah sweet if you get it, you can almost always break what you think your ceiling of capabilities is.

Re: Lisp is still a secret weapon

#9
In the expressjs example, I wonder how practical is to do all that interop instead of just using plain JS? I mean, is awesome that Clojurescript can leverage all those JS libs, but its worth writing lots of interop just to use Clojurescript? Of course, as Clojurescript libraries grow this will not be an issue, but it is nowhere close to JS for web dev.

For me, a more practical approach for server side would be to use Clojure instead of Clojurescript, the problem is Clojure does not have the rich ecosystem of web libraries as nodejs does.

Re: Lisp is still a secret weapon

#10
Looks like a subtle ad for Clojure. Which I don't mind because I am slowly falling in love with Clojure. I am not sure if it's a "secret" or we should "write all the things in Clojure" but I'd love to see more companies use it, including start ups. I wouldn't mind working for one. Combine JVM's power with Om/Reagent and I think it's a solid stack. Although I am not advanced Clojure programmer. I wonder how it's doing in production?
Post reply on HN