For decades, the APL community has debated the merits of explicit versus tacit programming. Should we name arguments? Should we rely purely on function composition? Is readability improved by good naming – or by eliminating variables entirely?
Today we are proud to announce that with Dyalog APL v20.4.1, released today, the debate is finally over. Starting in this release, the IDE will use state-of-the-art AI to automatically convert your code into tacit form whenever it is saved to disk.
Everyone agrees; tacit code is the future. And since the future is inevitable, this feature cannot be disabled.
Why Automatic Tacification?
While explicit APL is often praised for being readable and maintainable, we believe these claims arise primarily from insufficient exposure to tacit programming. Our internal research shows that:
- 83% of developers become comfortable with tacit code after only 7 years of continuous exposure
- 91% report that variables begin to feel unnecessary shortly after a fully tacit style has been accepted
- 100% agree that removing argument names eliminates entire classes of bugs involving argument names
Therefore, the IDE now ensures that all code committed to disk is safely tacit. Of course, your working session can still contain explicit expressions, but, once saved, the canonical representation becomes pure function composition.
Example
Suppose you write the following perfectly reasonable explicit function:
F←{(⍺/⍵)∧z/1⌽z←(⍺≥⍵)/⍺}
When you save, using ⎕SAVE, )SAVE, or using Link’s features, the IDE will automatically rewrite it as:
F←/∧≥(⊢⊢⍤/1⌽⊢)⍤/⊣
As you can see, the result is clearer, over 25% shorter, and entirely free of distracting variable bindings.
This transformation is powered by our new Tacit APL Combobulator Engine, internally codenamed TACE-9000.
How the AI Works ✨
TACE-9000 uses a multi-stage pipeline:
- Parsing: your code is analysed to identify opportunities to remove arguments.
- Reasoning: the AI determines how the expression can be rewritten using only combinators.
- Solution pooling: multiple tacit forms are generated and scored.
- Opacity selection: the version most likely to provoke admiration at user meetings is chosen.
The model was trained on a carefully curated dataset including:
- tacit one-liners from APLcart
- inscrutable entries from the APL Problem Solving Competition
- Aaron Hsu’s code
Benefits
Automatic Tacification provides several important advantages:
- Reduced disk usage: tacit code tends to be shorter
- Reduced semantic overhead: you cannot be confused about the names referred to if there are not any
- Increased conceptual density: no pesky variable names to bloat your algorithms
- Improved code review: reviewers will spend less time nitpicking variable names and more time asking, Wait… what?
Migration Strategy
No explicit migration is required; simply open your workspace in Dyalog v20.4.1. If you use Link (recommended), your source files will automatically be updated. Otherwise, save your workspace. The IDE will take care of the rest.
Frequently Asked Questions
- Can I disable this feature?
- No.
- Can I configure the level of tacitness?
- No.
- What if I prefer explicit code?
- You are welcome to keep writing explicit code in the editor; the IDE will convert it for your convenience.
- What happens with constructs that cannot be rewritten in tacit form?
- An error message is displayed, prompting you to adjust your code.
- What if the generated code is harder to understand?
- Please await the release of our upcoming Tacit APL Discombobulator Engine, TADE-9000.
- What if there are security concerns about my code being consumed by AI?
- The AI has promised us to keep everything confidential and promises us that it is very secure.
Looking Ahead
We believe this feature represents a bold step toward the inevitable conclusion of programming: Code that nobody can read, but which is mathematically beautiful.

Follow