Saying Goodbye to one line of APL
66 points
by tosh
3 days ago
| 7 comments
| homewithinnowhere.com
| HN
harperlee
5 hours ago
[-]
APL was designed to be written on a chalkboard (if I remember the story right). It is quite dense, and programs are quite small. Reading is slow and requires you to ponder about what was written. You can hold a lot of content in a small amount of 'ink'.

Now, an idea: HN is always complaining that an ipad (or any other tablet) is a consumption device, as it is not designed to be used with keyboard/mouse. Do any of you know if there is an app where you can write APL with a stylus, and has the ability to evaluate expression on the fly, similar to a repl? That would be an awesome thing to do.

reply
JaumeGreen
4 hours ago
[-]
reply
shrubble
17 minutes ago
[-]
The Raspberry Pi and probably other versions of Dyalog APL has all the characters visible across the window and is interactive with a REPL.
reply
buescher
3 hours ago
[-]
On-screen tablet/phone keyboards seem perfect for apl to me.

There’s an iOS port of J but it’s no longer available on the App Store.

reply
Syzygies
1 hour ago
[-]
J is unclear on the concept, it's a hack to port APL to ASCII. I'm typing on a ZMK keyboard now where an APL unicode layer would be trivial. There are modern APLs. One can code a iOS keyboard with AI help.

While a native APL would be nice, the cloud solution would be robust access to a professional product. Build the chain via existing tools to bridge the iPad to APL running on a desktop machine.

I looked into this recently; but I've decided on Lean 4 as the successor "best language in existence" for my needs.

My recent language comparison: https://github.com/Syzygies/Compare

My APL one-liner story: https://news.ycombinator.com/item?id=27460887

reply
stirfish
2 hours ago
[-]
Here's a demonstration where APL is written on a typewriter thing: https://www.youtube.com/watch?v=_DTpQ4Kk2wA&t=208
reply
NetMageSCW
4 hours ago
[-]
My favorite APL one liner reduces spans of consecutive spaces in a string to one space by doing boolean algebra on the vector of which characters are spaces. APL provided me with a whole different perspective on vector style operation (it was my second language to be familiar with after Basic due to finding an APL introductory book at a discount shop). I find that way of thinking has been very helpful in developing with LINQ in C# and my personal library has many methods inspired by APL operators.
reply
icen
4 hours ago
[-]
Do you remember what it was? This is how I would spell that in BQN, and you could write something very similar in APL (you don't have shift, so you'd have to write 1 drop 0 cat swap instead)

    ((«¬∘∧⊢)' '=⊢)⊸/
This works by building a boolean mask of spaces, and converting it to a mask of 'is a space, preceded by a space', negates that, and replicates out by that inverted mask (i.e. is not a space preceded by a space):

Here's stepping through it with some input.

       (' '=⊢)  "this  is a  sentence with       many   spaces"
    ⟨ 0 0 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 ⟩
       («' '=⊢)  "this  is a  sentence with       many   spaces"
    ⟨ 0 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 ⟩
       ((«∧⊢)' '=⊢)  "this  is a  sentence with       many   spaces"
    ⟨ 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 ⟩
       ((«¬∘∧⊢)' '=⊢)  "this  is a  sentence with       many   spaces"
    ⟨ 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 1 1 1 1 1 1 1 ⟩
       ((«¬∘∧⊢)' '=⊢)⊸/  "this  is a  sentence with       many   spaces"
    "this is a sentence with many spaces"
reply
dzaima
2 hours ago
[-]
Some alternative spellings:

    (¬∘∧⟜«' '=⊢)⊸/
    (¬·«⊸∧' '=⊢)⊸/
    {¬«⊸∧' '=x}⊸/ # should have double-struck x here (U+1D569), but hn removes it
reply
icen
2 hours ago
[-]
There's also the much less vector oriented spelling:

    (1 ∾˜ "  "⊸(¬∘⍷))⊸/
which removes the first space of each occurrence of double spacing
reply
tosh
2 hours ago
[-]
in k:

  s:"this  is a  sentence with       many   spaces"
  
  s@&~0&':s=" "
reply
brudgers
2 days ago
[-]
reply
tosh
6 hours ago
[-]
ty, I accidentally submitted the url with anchor
reply
i_don_t_know
2 hours ago
[-]
Here’s some helpful background information on the project: https://news.ycombinator.com/item?id=47872891

In particular, it has diagrams of the data structures and how the algorithm operates on them.

reply
tosh
6 hours ago
[-]
The youtube channel has a few videos of the voxel game in action: https://www.youtube.com/@namgyaaal
reply
TruffleLabs
7 hours ago
[-]
FYI Page certificate is bad (expired, wrong, etc.).
reply
CodesInChaos
2 hours ago
[-]
Qualys doesn't find any problems (though it's possible OP fixed them since your comment). The only clients that fail are Windows XP and 10 year old Mac OS/iOS.

https://www.ssllabs.com/ssltest/analyze.html?d=homewithinnow...

reply
kcroarkin
6 hours ago
[-]
Author here. D’oh! Thanks for catching that. I have no idea what I’m doing web dev wise and made this site to talk about my APL experience. Will try to fix this when time permits.
reply
TacticalCoder
6 hours ago
[-]
I see nothing wrong here: Firefox and Chromium are both happy.

    Issued On Saturday, May 2, 2026 at 2:44:13 AM
    Expires On Friday, July 31, 2026 at 2:44:12 AM
    Certificate d87df94f5e922e0637aaff31768405813764ca7dadcafbd051bf48898860fb8f
    Public Key a9bd7eee0bb4f1e12431ca8fab0a70591b8966dad8226db84f53791e2d81c9e3
reply
LoganDark
3 hours ago
[-]
> The core what it does seems ridiculously simple. So much so that when I initially considered this I didn’t think it would even be close to being performant. I mean, an interpreted language and all of these movements on large shapes at once!–doesn’t feel like it would be a good idea!!! I guess I was wrong? Doing this on a chunk sized `16 128 16` is pretty fast and I’m able to fly around the map at high speeds (TBA: me demoing this live in a presentation). This kind of boggled my mind and broke my intuitions of what I considered good patterns, at least in the domain of APL.

I wonder what makes it so fast? Is it similar to how GHC can fuse/inline ops and such?

reply