Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

What does the Common Lisp community think about the adoption of Clojure and ClojureScript by "knowledge graph" companies like Roam Research and clones like Obsidian (https://news.ycombinator.com/item?id=28894481) and Athens (https://news.ycombinator.com/item?id=26316793)?

May 2020, https://athensresearch.ghost.io/why-you-should-learn-clojure...

> Clojure code is incredibly dense. If I have a file with 30 lines of code, it might as well be 1000 lines of java. I’m not exaggerating. The code does a whole lot in a few words and once you’re comfortable with Clojure, man you can whip out a web service really fast ... You will never want to program without a REPL again ... Clojure isn’t just function-oriented in its syntax; it can be object-oriented, and stack-oriented, and array-oriented, and so on–and mix all of these styles freely, in a controlled way. If you don’t like the way the language fits a certain problem, you can write a macro which defines a new language, specifically for that subproblem.

Is Clojure considered a net positive for bringing more funding and developers into the family of Lisp dialects? Do Clojure developers graduate to CL?



I worked at Hotelicopter, which was a hotel meta-search engine written in Ruby on Rails. We were bought out by the six major hotel chains in the US and re-branded as Roomkey.com. To get us started, they agreed to push a lot of traffic at us. We knew from load testing that it would be very difficult, with our practically non-existent ops team, to scale Rails to handle 1000x our current load.

We knew we had to rewrite the system in a more scalable language, and we had to be live on a fixed date. This was late 2010, early 2011. Our CTO evaluated a number of languages and chose Clojure. A team of five or so devs was able to write the entire system in a few months and launch without problems. I don't think that would have been possible in a non-lisp language.

The Clojure learning curve was steep, especially since stack traces for anonymous functions in Clojure 1.1 often began with "nil pointer exception, no source file, line 0."

Once our dev team "got" Clojure, we were hooked. The verbosity of other languages started to look appalling. Clojure let us iterate quickly without sacrificing performance, which was suddenly a big issue.

Writing Lisp code permanently changed the way I think, and the way I code in other languages. I strongly prefer composing short, deterministic functions, which are testable and easy to reason about.

Roomkey became a victim of the pandemic, when hotel bookings declined sharply.

I'm just now starting to pick up Common Lisp, and it's a joy: the simplicity and consistency of the language, the REPL, the emacs integration. I also like that it compiles to native code. That's good for performance and for deployment, since it doesn't require the target machine to have a JVM.


I've worked at two different Clojure companies now.

My take is that yes, Clojure is strictly better than, say, Python. It is strictly worse than Common Lisp. A lot of stupid BS just goes away when you're not papering over an underlying runtime. Yet, the Common Lisp community has struggled with what I'll genteely call "ergonomics of modern development"; i.e, the language contortions to do some boring normal things, particularly around hashmaps, are a PITA. Clojure addresses that nicely. However, if a serious startup went into Common Lisp, those things would be addressed internally in a few months (hopefully they'd release the library).

The angle where Clojure really wins is access to JVM libraries. Just, no contest.

Clojure as a hiring strategy is strategically problematic. It's niche, a lot of people won't know it, and some really smart people will do some gnarly hacks for your company starting out. The implication is that later on, you have to unwind the hacks, new people have to go through a deconfusion period, and the smart people will move on leaving you with gnarly code to untangle. I do not expect this to be different for Common Lisp companies.

Would I build a team on Common Lisp? Yes, but I would not plan it in such a fashion that I would expect the team to get large, or for the entire company to have to interact with their codebase. I'd apply similar calculus to Clojure, I just don't think its as good as CL.

If I really needed the JVM libraries, I'd be doing the project in Scala.

Too, if I really needed a strong reliable software pipeline, I'd be doing the project in a strongly typed non-dynamic language: Scala, Rust would be my preferred goto languages.


I love Common Lisp, but frankly the purists are wrong on this. Clojure is a damn sight more of a lisp than any other even remotely common language. My preference now leans CL, but Clojure is a joy in its own right, with some of the nicest little touches I've seen in a language.


Why "more of a lisp"? I guess it depends on your personal definition of what a lisp is. For example, I'm much more interested in Racket because my interest is computer science.


'More of a lisp' than other common languages is what I understand it to mean, not more of a lisp than Common Lisp or Racket.


"More of a lisp" -> "Fewer of the requirements that make Lisp are incorrect or missing"

E.g. a S-exp-ified version of C is "more of a Lisp" than standard C, like:

https://github.com/kiselgra/c-mera


> personal definition of what a lisp is

Evidently, it has something to do with "a joy" to use, not with objective attributes like the details of how things work: symbols, lists, Booleans.

Also, the grandparent makes no hint of this issue at all; ravi-delia isn't responding to anything in the grandparent comment.


I meant more along the lines of dynamism, s-exprs, metaprogramming, a first-class REPL, that sort of thing. Clojure is a weird lisp for sure, but it's certainly more similar to Scheme than, for instance, Java, Python, or Go (let alone Rust). Not sure what you mean by that last part, care to clarify?


Oh yeah no I meant compared to frequently used languages. Racket's great too, though I didn't love the REPL. Clojure is definitely an odd one out in the lisp family, but compared to anything else on the JVM it's a lisp through and through.


> You will never want to program without a REPL again

I’m not a programmer. What does this mean in terms of Python? Does one write code in the repl then export it to a file to Polish when done?


Kind of, a Python REPL is nothing more than a live Python environment. You type some Python code and you immediately see the result. The main idea behind a REPL is to speed up the feedback loop of write code -> execute code -> verify results -> modify code -> repeat.

The simplest REPL you're probably familiar with is a separate window where you can execute some Python code which you can then copy paste into your editor where you can polish it. This is helpful, but a REPL (even the Python REPL) can do more.

For example a nice IDE for python or lisp lets you execute selected pieces of code with a single keypress. You immediately know whether it works, and you can try out your snippet with different inputs to quickly test it etc.

You'll often make a modification or two after checking your code in a REPL, and good IDEs will let you replace the original snippet with your modified snippet with one or two key presses.

REPLs tend to be a little bit nicer if they're well integrated into your program, for instance you can load parts of your program, or start a REPL with a breakpoint in the middle of a program to debug your code from within a REPL. Again, intelligent IDE integration makes this really cool!

In the case of many Lisps, REPLs have even deeper functionality. You get features like automatically being thrown into a REPL when an error happens, so you can rewrite the code and pretend the error never happened and run it with the updated version. This is even possible in live code! (I believe some lisp code running in a space device at some point was updated from within a REPL in this way? While it was in space!)

I believe there is even more to it than that, but I've never gone deeper than this.


The old Python support for Emacs was such very good support for true REPL driven development. I have been using Lisp languages professionally since 1982, so I am fussy about having good REPL support.

I usually use PyCharm Pro and VSCode when I have to use Python for work gigs (I do deep learning about 100% of the time now), but when I want a great REPL experience I flip over to Emacs.


It's like the prisoners of Plato's cave. One could describe it to you but it's nothing like trying it. I would suggest you look for some videos or blog explaining it, or take a a week-end to try. The term REPL is here deceptive. You can load the whole compiler and the whole program in memory in a server accepting code changes and interact with them iteratively and have transparent incremental compilation when editing the code.




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

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

Search: