Empty
- The title of this article is not correct because of technical limitations. The correct title is actually '''.
- Not to be confused with Whitespace.
Designed by | User:Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff |
---|---|
Appeared in | 2024 |
Computational class | Turing complete |
Major implementations | [Intentionally absent] |
File extension(s) | . |
(or Empty) is an esoteric programming language designed by User:Fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff that was designed to be really hard to make an interpreter for.
Math
To create numbers, ∅ (or Ø) is used as 0, and then you use operations (+,-,•,^). Math is followed in left to right. To make a part go first, prefix it with a number. Bigger numbers go first. (The minus sign for operator precedence is –, not -) For example:
∅^∅+∅^∅
yields 1, however
∅^∅+∅1^∅
yields 2.
The interpunct represents division x/y, while the semicolon and slash represent y/x, also, modulo is M.
The B operation takes the number before it, and if its less than zero, it becomes 0. For example:
∅-∅1^∅B+∅2^∅
yields 1. The # character deletes the current values. So,
∅^∅#+∅1^∅
yields 1, not 2 Also, spaces are no-op
Strings
Any character that is not a command will be treated as part of a string. For example:
Hell+o
yields "Hello"
The `
instruction turns strings into integers, and vice versa. So,
∅^∅`+.+∅1^∅1``
yields 1.1
The "
instruction treats the next character as a string and ignores it.
Errors
If an error occurs like ∅^∅•∅
(division by 0), then the program jumps back to the S that has a [letter
] after it, while keeping the properties of the most nearest T that has a [letter
] after it, where letter
is the letter after the place where the error occurred. The letter directly after an expression is not counted as part of a string unless it has a " behind it. For example:
∅^∅Te#Se;∅1^∅e
returns 1.
I/O
To have a string inputted, you use the I command. To output a number, you use a colon. So
∅^∅+∅1^∅+∅2^∅:
prints 3
to the console
Robots
A robot is made with the letter R, after that is the robot's one-letter name. The robot can be called the same way you make it. After that the robot stores the value that was being executed. If a robot was called before an input command, the robot's value is inputted, and it stays the same. When the program jumps, all Robots reset to the state they were at the matching T. For example
∅^∅Rr#∅+∅RrI+∅1^∅1+∅2^∅:
print the string "3" to the console
Operations between strings and numbers
Addition
Adding two strings together combines them. Adding a string and a number together returns the string.
ab+c:
prints "abc"
Subtraction
If both are strings, all characters in y are removed from x
abc-bc:
prints "a"
Otherwise, the string is returned
Division
if x is a string and y is a number, x is duplicated 1/y times
a•∅1^∅1•∅2^∅2+∅3^∅:
prints "aa" If y is a string, return x
Modulo
if both are strings replace all instances of "%" with y in x, if "%" is not in x, replace all instances of y with "%" in x (similar to %
in Txet)
if one (A) is a number and the other (B) is a string, take the first A letters of B.
Buy%Milk:
prints "Buyilk", while
BuyM∅2^∅2+∅3^∅:
prints "Bu"
Unless A is 0, then return the canonical reprensentation of B (similar to repr() in python)
Reverse Division (;
)
Python Modulo:
H%cllo" World!;e:
prints
Hello, World
Comments
Comments start with 模
and end with that too. code inside comments will not run
∅模2^∅2+∅3模^∅:
prints 1
Computational class
Empty is Turing-complete, because it can be compiled from Numbered Brainpocalypse.
+N
becomes:
RNI+∅1+∅RN
where N is a character that corresponds to the cell.
-N
becomes:
RNI-∅1+∅RNT<l>+∅1+∅;∅<l>
where N is a character that corresponds to the cell, and L is an identifier of the instruction.
Programs
Hello, World!
Hello," World!:
Cat Program
I:
Digital Root
I-∅1^∅M∅5^∅4+∅5^∅4+∅5^∅3^∅8^∅8+∅9^∅+∅2^∅:
FizzBuzz
Sl+∅1^∅TlTfTuTiM∅5^∅4+∅5^∅4+∅5^∅;∅f∅7;∅8^∅iSf#Fizz:∅7;∅8^∅nSiM∅5^∅4+∅5^∅4+∅5^∅4+∅5^∅4+∅5^∅;∅b∅7;∅8^∅uTbSb"B+uzz:∅7;∅8^∅nSu:#TnSn ∅9^∅9•∅l
Infinite Loop
SiTi∅•∅i
99 bottles of beer
∅30^∅20+∅30^∅•∅40^∅10•∅30^∅20+∅30^∅20+∅30^∅20+∅30^∅20+∅30^∅20-∅5^∅-∅5^∅;∅5^∅s;∅5^∅+∅5^∅TfTw:" bottles" of" beer" on" the" wall, :∅5^∅/∅wSw:" bottles" of" beer. " Take" one" down," pass" it" around, :∅5^∅/∅fSf-∅5^∅:" bottles" of" beer" on" the" wall. SsTs1" bottle" of" beer" on" the" wall, 1" bottle" of" beer.\nTake" one" down," pass" it" around, No" more" bottles" of" beer" on" the" wall.:
Truth-machine
I-∅5^∅;∅5^∅o∅5^∅/∅zSoTo∅5^∅:∅5^∅/∅oSzTz∅:
Quine
%s%s"Ra"M"Ra"I"1";"∅"M"Ra"I":RaMRaI1;∅MRaI:
Palindrome
#∅^∅:∅^∅#
Always outputs 1
Calculator
∅^∅•∅bSpI`+I10`:∅5^∅•∅eSsI`-I10`:∅5^∅•∅eSmI`•∅10^∅10•I20`:∅5^∅•∅eSdI`•I10`∅5^∅•∅eSb模 模TbIRoTpTsTmTd-"++"1`-∅5^∅;∅pRoI-"-+"1`-∅5^∅;∅sIRoI-x+"1`-∅5^∅;∅mRoI-"/+"1`-∅5^∅;∅dSeTe
Fibonacci sequence
"1`Ra"1`bSlRaI+RbI:RaRaI+RbI:Rb"1`•∅l"
XKCD Random Number
∅^∅+∅1^∅+∅1^∅+∅1^∅:
How to cheat
Instead of using ∅s, to make x do "digitof(x)`
File extension
.thisfilextensionwouldbecanocicallyrepresentedbyazerowidthnonjoinerbutironicallyeventhoughthe languagesnameisonecharacterandzeropixelswidethisextensionisbothreallylongandfalsecreatingaparadox