Funcinton
Jump to navigation
Jump to search
Not to be confused with Funciton.
Funcinton is an esolang designed User:Monochromeninja to be able to use integers as functions and vice versa.
There is one stack that starts empty. Indexing out of bounds gives a 0.
Integer-function interchanging
The integer 0 is treated as an empty string. Any other integer n
is treated as the function of the integer n//256
(where //
means integer division) concatenated with the ASCII character with the codepoint of n%256
(where %
means modulus). Concisely:
func(0) = "" func(n) = func(n//256) + chr(n%256)
where chr(n)
is the ASCII character with the codepoint of n
.
Commands
- Any digit pushes itself to the stack.
{N}
pushes N (a multi-digit number) to the stack.?
pops N and pushes a random integer R such that 0 <= R <= N.- Any of
+-*/%
pops Y, pops X, then pushes X OP Y. (/
is integer division;%
is modulus.) >
pops Y, pops X, then pushes 1 if X > Y else 0.@
pops N, then pushes a duplicate of the N'th element of the stack. (0@
duplicates the top element of the stack.)!
pops N, then pops the N'th element of the stack. (0!
pops the top element of the stack.)_
pushes the codepoint of one character of input. (EOF is repeated -1.).
pops a codepoint and outputs it as a character.^
pops a function F and runs it by inserting its code immediately after this instruction.#
pops F, T, and C in that order, then runs T if C is nonzero, otherwise runs F.
Examples
Cat program
{8292086038218679469791840846639459376902179}0@^
Output stack
{1207624538945969667811301018820615670734492809758244679715}0@^
This can be trivially modified to output "Hello, world!" or any fixed string. (This does not reverse the stack.)