---
title: 'Advent of Languages 2024, Day 5: Roc'
date: 2025-09-30
draft: true
toc: false
---

import Sidenote from '@components/Sidenote.astro';

I know I said at the beginning that I was most likely not going to get through much of Advent of Code before running out of steam and giving up on the whole different-language-every-day thing, but man, even I wasn't expecting to only make it through 4 days before giving up. That's a new low, even for me.

I think the problem is that I decided, in my hubris, that I was going to do Lisp for Day 5--and not a nice, friendly modern Lisp like Clojure, either, but straight-up old-fashioned Common Lisp.<Sidenote>Which isn't even the oldest of Lisps, since it only dates back to 1994. Plenty old enough for me, though.</Sidenote> For some strange reason, as soon as I reached this decision, I discovered that I had lost all interest in the project and was now actively seeking excuses to avoid it. Funny coincidence, huh?

I'm not entirely sure why I'm so subliminally resistant to the idea of using Lisp. I don't think it's _just_ because there's set of people who like to talk about Lisp as if it's superior to every other language that has ever existed or _could_ ever possibly exist, because after every language has some of those. It's more than that. It's the way that they [manage to convey](https://paulgraham.com/avg.html), without ever being so gauche as to actually come out and _say_ it, that using Lisp means that they're a better programmer than you, and smarter than you, and just all-around _better_ than you in every meaningful way. Oh, you disagree? Well, you must just not be smart enough to truly appreciate Lisp. But don't worry, it doesn't make you a _bad person_. Just, you know, not as good as _me_.

Anyway, as you'll note from the title, I eventually decided to give up on Lisp for the time being. By then, of course, it was too late to continue with Advent of Code, so I left the project to languish for most of the subsequent year. But you know what? I've got a hankering to try a new programming language again, and one I've had my eye on for a while is [Roc](https://roc-lang.org).

Roc is a statically-typed, purely<Sidenote>I think.</Sidenote> functional language. It's headed up by the guy who created Elm, which I've heard mostly good things about, and it looks sort of like a more-approachable version of Haskell, with an emphasis on performance--like, actual runtime performance--and approachability. It has a heavy focus on developer tooling as well, so that's kind of cool. Also, it has built-in string interpolation, of the `${expression}` flavor, like Javascript. Except that _unlike_
