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>