Show HN: I created a language called AntiLang – breaking all the conventions
Overall reception
- Many found the idea amusing and nostalgic, evoking the feeling of being a beginner reading confusing code.
- Reactions ranged from “fun but mind-bending” to “I had to close the tab immediately.”
- Several argued it doesn’t truly “break conventions,” but is mostly a normal language with reversed or postfix-ish syntax.
Similarity to other languages
- Multiple commenters noted strong resemblance to Smalltalk, Forth, Factor, APL-family, PostScript, RPL, and K, especially in postfix/control-flow style.
- Some said the code was surprisingly readable, particularly to those with Forth/RPN experience.
- Others commented that, compared to APL or INTERCAL, AntiLang is relatively tame.
Postfix notation and cognition
- One side argued postfix/RPN is objectively easier and more efficient (fewer keystrokes, clearer structure, fewer ambiguities).
- Others countered that infix is easier for most humans due to familiarity; postfix adds cognitive load even if efficient once mastered.
- There was discussion of how mathematicians and programmers conceptualize functions (as verbs vs nouns), and whether typical function notation is driven by natural-language word order (SVO vs SOV).
Design, syntax, and naming suggestions
- Suggestions included:
- Renaming keywords to better fit postfix (“then/otherwise” instead of
if/else, “go on” forwhile, “over” for assignment). - Changing assignment vs equality operators (e.g.,
=vs<-,=/=) for both sanity and shock value. - Starting conditionals from
elseor usingunless. - Alternative names like “MirrorLang,” “Tenet,” or “jumbled.”
- Renaming keywords to better fit postfix (“then/otherwise” instead of
“Evil” and esoteric feature ideas
- Many proposed deliberately hostile or absurd features:
COMEFROMsemantics inspired by INTERCAL, interceptors, and event-like control flow.- Randomized execution or probabilistic commands.
- Trailing or balanced-whitespace-sensitive syntax; whitespace-encoded line numbers.
- Locale-dependent decimal separators (
.vs,) and localized operator/keyword names. - Fuzzy variable name matching to eliminate undefined-variable errors.
- The creator frequently responded by opening GitHub issues for the more diabolical proposals.