Spatial Languages: Unlocking 2D Code for Complex Logic

Spatial languages: Writing code in 2D

Spatial Languages: Unlocking 2D Code for Complex Logic

I explore how moving code from one dimension to two unlocks new ways to express complex logic, like 3-arity functions. By using vertical space, we can chain operations and manage temporary variables more intuitively. This approach mirrors quantum computing circuits, allowing us to build clean, self-resetting expressions like a 3-bit adder in a single spatial block.

Forget what you know about code for a second. If I could flick a magic wand, I'd wish for the 3-arity notation to look like this.
  1. dahart

    This is cute, and it’s fine and fun to play around, but I don’t know, takes itself way too seriously or something. I apologize for being negative, but blowing my mind? No, not exactly. The attempt at the end to justify isn’t compelling to me and feels pretentious or something; the so-called Sapir-Whorf hypothesis (a misnomer according to the link) is about words and concepts, not about layout. This article fails to consider how to say or to read 2D code, or even think about why text is normally 1D. Language is expressed in one dimension because of time. We don’t speak in 2D, therefore we don’t write in 2D. We do visualize parse trees as trees (2D pictures) all the time, which isn’t mentioned. Also not mentioned are all the massive downsides of trying to write & edit & maintain 2D code, as well as the fact that we have good ways to write 3+ argument functions in 1D.

    Nitpick - the andFlip function is wasting a whole dimension with unnecessary lines, and also modifying its input argument unnecessarily (yuck!), and it takes 3 arguments as an array for no good reason.

    Better: andFlip = lambda a,b,c : not c if (a and b) else c

    Except this is really just a normal 2 argument ternary, it does nothing interesting with a or b individually, it treats them as a unit, so I’d argue this shouldn’t even be a function.

  2. jerf

    "All this time we’ve been writing expressions in 1D space, but what happens when we unlock an extra dimension?"

    Text is a serialization of an n-dimensional work space. "N-dimensional" doesn't have a formal definition I'm aware of but the major characteristic of it is that a new dimension can pop up anywhere. If you feel like you want to double-click on that, you can see my earlier comment here: https://news.ycombinator.com/item?id=35096647

    A conventional textual language can represent everything mentioned there, whereas 2D layouts struggle almost immediately to represent things that textual layouts represent quite easily.

    It can still be a useful "see the world differently" exercise, but it's the opposite of "freeing your mind"... it's stepping into a fairly small subset of functionality, albeit an unconventional one, and seeing what you can still manage to do even so. Rather than "unlocking a new dimension" it's actually throwing away n-2 of them. The experience of using this for any period of time would reveal this, as it would be a constant struggle to represent even very simple algorithms in this format.

    I post this mostly because of the "familiarity breeds contempt" effect that programmers seem to get hit with for text. There is a reason we use text and it's not lack of imagination or being stuck in our ways... it is actually an incredibly rich and powerful format that poses a serious challenge for any alternative to overcome because of the astonishing combination of com […]

  3. pja

    Was this post prompted by this year’s ICFP competition?

    https://icfpcontest2026.com/

More from this day

2026-07-25