Discussion
Loading...

#Tag

Log in
  • About
  • Code of conduct
  • Privacy
  • About Bonfire
Bozhidar Batsov (a.k.a. Bug)
Bozhidar Batsov (a.k.a. Bug)
@bbatsov@hachyderm.io  ·  activity timestamp 1 hour ago

I've converted some random dev notes I had lying around from working on clojure-ts-mode, neocaml and asciidoc-mode to a blog post with some general advice for building #Emacs major modes powered by #TreeSitter https://batsov.com/articles/2026/02/27/building-emacs-major-modes-with-treesitter-lessons-learned/

I hope some of you will find it useful! I certainly wish someone had written such an article a year ago when I started to get more serious about playing with TreeSitter.

#Clojure #OCaml #AsciiDoc

(think)

Building Emacs Major Modes with TreeSitter: Lessons Learned

Over the past year I’ve been spending a lot of time building TreeSitter-powered major modes for Emacs – clojure-ts-mode (as co-maintainer), neocaml (from scratch), and asciidoc-mode (also from scratch). Between the three projects I’ve accumulated enough battle scars to write about the experience. This post distills the key lessons for anyone thinking about writing a TreeSitter-based major mode, or curious about what it’s actually like.
  • Copy link
  • Flag this post
  • Block
Simon Brooke
Simon Brooke
@simon_brooke@mastodon.scot  ·  activity timestamp 2 days ago

In #CommonLisp, `=` takes arbitrary numbers of args, but `eq` takes exactly two.

In #Scheme `=` takes arbitrary numbers of args, and `eq?` also takes arbitrary numbers of args.

In #Logo, `equalp` takes exactly two args, and I don't think there's an equivalent of `eq`.

In PSL, and in Lisp 1.5, both `equal` and `eq` take exactly two args.

#Clojure doesn't have `eq`, but `=` takes arbitrary numbers of args.

Do you see any reason that `eq` should take only two args?

#Lisp

  • Copy link
  • Flag this post
  • Block
Simon Brooke
Simon Brooke
@simon_brooke@mastodon.scot  ·  activity timestamp 4 days ago

SBCL #CommonLisp
(nth 2 '(1 2 3 4 5 6))
3

#Clojure
(nth '(1 2 3 4 5 6) 2)
3

#Scheme
(list-ref '(1 2 3 4 5 6) 2)
;Value: 3

So, they differ on the name of the function and the order of the arguments, but they all agree on zero-indexing the first element of a list.

This seems perverse to me. Surely the index of the first element should be 1, the second, 2, and so on?

Argue against me -- and please give an argument which is not just **TRADITION!**

#Lisp

  • Copy link
  • Flag this post
  • Block
Bozhidar Batsov (a.k.a. Bug)
Bozhidar Batsov (a.k.a. Bug)
@bbatsov@hachyderm.io  ·  activity timestamp 4 days ago

Another interesting perspective on the potential impact of agentic coding / #LLMs on programming https://felixbarbalet.com/simple-made-inevitable-the-economics-of-language-choice-in-the-llm-era/

I'd love to see languages like #Clojure gaining popularity from this trend, but I certainly have my doubts that this will actually happen.

Context is everything

Simple Made Inevitable: The Economics of Language Choice in the LLM Era

Two years ago, I wrote about managing twenty microservices at Qantas with a small team. The problem was keeping services in sync, coordinating changes across system boundaries, fighting the entropy of a codebase that grew faster than our ability to reason about it. Many years before my time, someone had
  • Copy link
  • Flag this post
  • Block
Shane Rogers
Shane Rogers
@swrogers@social.lol  ·  activity timestamp 6 days ago

I've been a #DoomEmacs user for some time, now, even having curated my own literate config out of their "static" files - along with all the extra stuff one adds to such a thing.

As one does, in the past I've also attempted to do my own #emacs config from scratch, usually falling into the "let's recreate doom!" hole, whether I wanted to or not (thus the reason I just went the route I did).

Over the past couple of months I've decided to - slowly - do the emacs bankruptcy declaration. Now, just to make things even more interesting I have decided against the use-package macro. Why? Because why not!

I've been using my scratch build for a month or so, haven't even opened my doom config up. It's been a great process, learning process, more understand of the process. It helps that I've been on a learn lisp quest for the past couple of years, too ( #CommonLisp, #sbcl, #clojure, #elisp of course).

The large emacs distros are great an an excellent way to find curated packages. Doom is even a really nice framework. Sometimes you just want to do your own thing.

  • Copy link
  • Flag this post
  • Block
Simon Brooke
Simon Brooke
@simon_brooke@mastodon.scot  ·  activity timestamp last week

#Clojure is not widely used in Africa, it seems. Or Greenland.

Everywhere else, though...

https://clojure.org/news/2026/02/18/state-of-clojure-2025

Clojure - State of Clojure 2025 Results

  • Copy link
  • Flag this post
  • Block

BT Free Social

BT Free is a non-profit organization founded by @ozoned@btfree.social . It's goal is for digital privacy rights, advocacy and consulting. This goal will be attained by hosting open platforms to allow others to seamlessly join the Fediverse on moderated instances or by helping others join the Fediverse.

BT Free Social: About · Code of conduct · Privacy ·
Bonfire social · 1.0.2-alpha.34 no JS en
Automatic federation enabled
Log in
Instance logo
  • Explore
  • About
  • Code of Conduct