Exclaim
Exclaim
Exclaim is a minimalistic esoteric programming language created in 2025 by a young enthusiast with nickname "digitpink". It's inspired by Chicken but focuses on simplicity and memory-based operations using only exclamation marks.
It was designed to be easy to learn, with each command being a specific number of exclamation marks (`!`), and output happens directly to the console.
Overview
Exclaim operates on a tape of cells (like in Brainfuck). Each cell holds an integer. The language has a pointer that can move left or right, and the tape can grow dynamically.
Despite being fully Turing-complete in principle, Exclaim is intentionally useless and minimal, created as a fun experiment. The main goal was to make a language even smaller and simpler in command set and syntax than Brainfuck.
Commands
All commands are sequences of only `!` symbols:
Command | Meaning |
---|---|
! |
Increment value at current cell |
!! |
Decrement value at current cell |
!!! |
Move pointer to the right |
!!!! |
Move pointer to the left |
!!!!! |
Print the current cell index (position) |
!!!!!! |
Print the value at current cell |
!!!!!!! |
Move pointer to the end of tape |
!!!!!!!! |
Move pointer to the beginning of tape |
!!!!!!!!! |
Add a new cell at the end |
!!!!!!!!!! |
Remove the last cell (if more than one exists) |
!!!!!!!!!!! |
Reset memory to a single zeroed cell |
Example
This example moves the pointer three times to the right and adds +1 three times. Then prints the current index and value.
!!! !!! !!! ! ! ! !!!!! !!!!!!
Output:
3 3
Implementation
Below is a simple HTML + JavaScript implementation of the Exclaim interpreter:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Exclaim Interpreter</title> </head> <body> <textarea id="code"></textarea> <button onclick="run()">Run</button> <pre id="output"></pre> <script> function run() { const code = document.getElementById("code").value; let mem = [0], ptr = 0, out = []; let i = 0; while (i < code.length) { let count = 0; while (code[i + count] === "!") count++; const cmd = "!".repeat(count); switch (cmd) { case "!": mem[ptr]++; break; case "!!": mem[ptr]--; break; case "!!!": ptr++; if (!mem[ptr]) mem[ptr] = 0; break; case "!!!!": if (ptr > 0) ptr--; break; case "!!!!!": out.push(ptr); break; case "!!!!!!": out.push(mem[ptr]); break; case "!!!!!!!": ptr = mem.length - 1; break; case "!!!!!!!!": ptr = 0; break; case "!!!!!!!!!": mem.push(0); break; case "!!!!!!!!!!": if (mem.length > 1) mem.pop(); break; case "!!!!!!!!!!!": mem = [0]; ptr = 0; break; } i += count || 1; } document.getElementById("output").textContent = out.join("\\n"); } </script> </body> </html>