We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.
Witeal
Witeal (pronounced Whittle), is an esoteric programming language similar to brainfuck, in the way of its oversimplicity. It stands for Why is This Eaven a Language. There are 9 identifiers in Witeal.
"<" - decrement cell by one
">" - increment cell by one (max 1000 cells, 0-999)
"+" - adds one to the cell
"-" - subtracts one from the cell
"[" - declares start of loop
"]" - declares end of loop
"&" - return boolean/integer on condition
"/" - use cell
"." - indicate skip in case of error
That's it! All the commands in the entire language right there. Here's a hello world program:
@ start program [ initialize loop [ initialize second loop - subtract one from cell &/]. loop if cell has anything in it >]. increment cell by one, then loop (if cell cannot be incremented, skip past loop) [ initialize loop <]. decrement cell by one, then loop (if cell cannot be decremented, skip past loop) ++++++++> add 'H' to cell 0 +++++> add 'E' to cell 1 ++++++++++++> add 'L' to cell 2 ++++++++++++> add 'L' to cell 3 +++++++++++++++> add 'O' to cell 4 [+]. add ' ' to cell 5 +++++++++++++++++++++++> add 'W' to cell 6 +++++++++++++++> add 'O' to cell 7 ++++++++++++++++++> add 'R' to cell 8 ++++++++++++> add 'L' to cell 9 ++++> add 'D' to cell 10 - add new line to cell 11 [ initialize loop / print cell > increment cell &++++++++++++<]. loop if cell is 0-10 (less than 11) [ initialize infinite loop ] close infinite loop _ declare end of program
but this was written for readability. When writing code, it would be better to write it like this:
@[[-&/].>].[<].++++++++>+++++>++++++++++++>++++++++++++>++++++++++++++>[+].+++++++++++++++++++++++>+++++++++++++++>++++++++++++++++++>++ ++++++++++>++++>-[/>&+++++++++++<].[]|
The output:
HELLO WORLD
This is a simple Cat program (accepts input, then repeats as output):
@ introduce program [ initialize loop [ initialize second loop - subtract one from cell &/]. loop if cell has anything in it >]. increment cell by one, then loop (if cell cannot be incremented, skip past loop) [ initialize loop <]. decrement cell by one, then loop (if cell cannot be decremented, skip past loop) [ initialize loop / print empty cell, activating input &->>]. if the user did not press enter, increase cell and loop again + if the user did press enter, clear cell [ initialize loop / print cell > increment cell &+<]. loop again (skip loop if cell is empty) [ initialize infinite loop ] close infinite loop _ declare end of program
or simply (or not so simply):
@[[-&/].>].[<].[/&->>].+[/>&+<].[]_
Here's a program that compares two strings:
@[[-&/].>].[<].++++++++++++++>+>+++++++++++++>+++++>->[/>&+++++<].[/&->>].+[/>&+<].[<].>>>>>&++++++++++++++++_>&++++++++_>&+++++++++_ >&++++++++++++_>+++++++++++++++++++>+>+++++++++++++>+++++>++++++++++++++++++++++++++++++>++++++++>+++++>++++++++++++++++++>+++++<<<<< <<</>/>/>/>/>/>/>/>/.>++++++++>+++++++++</>/[]_
Its C# equivalent:
using system;
class Program
{
public static void Main(String[] args)
{
Console.Write("NAME\n");
string name = Console.ReadLine();
if (name == "PHIL")
Console.Write("SAME HERE\n");
Console.Write("HI");
while(true)
{
}
}
}