Void
Void is User:None1's first esolang (that isn't a dialect of an old esolang) invented in 2025.
Types
This esolang is an untyped one as it has only 1 type: void. Unlike the type with the same name in most practical languages, this type can not only store empty value but also store a lambda function. We'll use none to represent a void type that contains no value in the rest of the article.
Features
Code
Commands are separated by semicolons, like C and C++.
Lambda functions
A lambda function is defined like this, similar to that of C++:
([](arg1,arg2,...){code})
The brackets that wrap around the function are mandatory (unless it is in a return statement).
Of course, the type of the function itself, its arguments (if any) and its return value are all void.
Named functions
A named function is defined like this:
[name](arg1,arg2,...){code}
Return statements
The return statement is like this:
->(statement);
The brackets are mandatory as well.
To return none, use this syntax:
->();
If a function doesn't have a return statement, it returns none.
Conditional
The conditional statement is like this:
?(statement){code}
If statement isn't none, code is done.
Calling a function
(function)(arg1,arg2,...)
Again, the brackets are mandatory.
If there are not enough arguments, the remaining arguments are initialized with none. If there are too many, the excess arguments are stripped off.
I/O
There's no I/O.
Computational class
It is Turing complete because it can be translated from a 2-register Minsky machine.
We can use nested lambda functions for numbers, the level a function is nested represents its value, none is 0. First, we can write the increment function and the decrement function:
[inc](a){->([](){->(a);});} [dec](a){->((a)());}
Next, we can use recursion for jumps.
Finally, we can use the conditional statement for conditional jumps.