Functionality is an esoteric programming language written by User:Dominicentek with the goal being having the most functionality as possible.
Instructions
Variable Management
| Instruction | 
Syntax | 
Description
 | 
| var | 
<varname> <value> | 
Creates a new variable (if not created) and sets a value to it
 | 
| del | 
<varname> | 
Removes a variable
 | 
| tonum | 
<varname> | 
Converts a string to a number
 | 
| tostr | 
<varname> | 
Converts a number to a string
 | 
Control Flow
| Instruction | 
Syntax | 
Description
 | 
| if | 
<value> <operator> <value> | 
Executes a code block if the condition is met
 | 
| else | 
 | 
If an IF statement fails, it executes this code block instead
 | 
| loop | 
<value> | 
Loops code block n times
 | 
| function | 
<function name> | 
Creates a new function
 | 
| call | 
<function name> | 
Calls a function
 | 
| while | 
<value> <operator> <value> | 
Loops code block if the condition is met
 | 
| exit | 
 | 
Exits the program
 | 
Console IO
| Instruction | 
Syntax | 
Description
 | 
| output | 
<value> | 
Outputs value to a console
 | 
| input | 
<varname> | 
Stores console input to a variable
 | 
Graphical Output
| Instruction | 
Syntax | 
Description
 | 
| initializegfx | 
<width> <height> | 
Initializes graphical output
 | 
| closegfx | 
 | 
Closes graphical output
 | 
| drawarc | 
<x> <y> <width> <height> <start angle> <arc angle> [thickness] | 
Draws an arc
 | 
| drawstring | 
<x> <y> <value> [fontname] [fontsize] | 
Draws a string/number
 | 
| drawline | 
<x1> <y1> <x2> <y2> [thickness] | 
Draws a line
 | 
| drawoval | 
<x> <y> <width> <height> [thickness] | 
Draws an oval
 | 
| drawrect | 
<x> <y> <width> <height> [thickness] | 
Draws a rectangle
 | 
| drawroundrect | 
<x> <y> <width> <height> <roundness> [thickness] | 
Draws a round rectangle
 | 
| fillarc | 
<x> <y> <width> <height> <start angle> <arc angle> | 
Fills an arc
 | 
| filloval | 
<x> <y> <width> <height> | 
Fills an oval
 | 
| fillrect | 
<x> <y> <width> <height> | 
Fills an rectangle
 | 
| fillroundrect | 
<x> <y> <width> <height> <roundness> | 
Fills a round rectangle
 | 
| setbg | 
<r> <g> <b> | 
Sets background color
 | 
| setfg | 
<r> <g> <b> [a] | 
Sets foreground color
 | 
String Management (these all begin with string instruction)
| Instruction | 
Syntax | 
Description
 | 
| substring | 
<varname> <value> <begin> <end> | 
Gets a substring of a value and stores it to a variable
 | 
| charat | 
<varname> <value> <index> | 
Gets the character at an index of a value and stores it to a variable
 | 
| length | 
<varname> <value> | 
Stores length of a value into a variable
 | 
| insert | 
<varname> <value> <index> <insertion> | 
Inserts a string into another string to an index and stores it to a variable
 | 
| replace | 
<varname> <value> <index> <char> | 
Replaces a character in a string and stores it to a variable
 | 
| combine | 
<varname> <value> <value> | 
Combines two values together as a string and stores it to a variable
 | 
| remove | 
<varname> <value> <begin> <end> | 
Removes a section of a string and stores it into a variable
 | 
| indexof | 
<varname> <value> <char> | 
Stores the index of a character in a string to a variable
 | 
| tocode | 
<varname> <char> | 
Converts a char into an ASCII code and stores it to a variable
 | 
| fromcode | 
<varname> <value> | 
Converts a number to a char based on its ASCII code and stores it to a variable
 | 
Array Management (these all begin with array instruction)
| Instruction | 
Syntax | 
Description
 | 
| create | 
<array> [capacity] | 
Creates a new array
 | 
| delete | 
<array> | 
Deletes an array
 | 
| subarray | 
<dest> <source> <begin> <end> | 
Gets a subarray of an array
 | 
| get | 
<array> <varname> <index> | 
Stores a value from an array into a variable
 | 
| set | 
<array> <value> <index> | 
Stores a value from a variable into an array
 | 
| length | 
<array> <varname> | 
Stores the length of an array into a variable
 | 
| insert | 
<array> <value> <index> | 
Adds a value into an array at specific index
 | 
| add | 
<array> <value> | 
Adds a value to an array
 | 
| remove | 
<array> <index> | 
Removes an element at an index
 | 
| indexof | 
<array> <varname> <value> | 
Stores an index of an element to a variable
 | 
Filesystem IO
| Instruction | 
Syntax | 
Description
 | 
| fscreatefile | 
<path> | 
Creates a new file
 | 
| fscreatedir | 
<path> | 
Creates a new directory
 | 
| fsdelete | 
<path> | 
Removes a file/directory
 | 
| fscopy | 
<source> <dest folder> | 
Copies a file/directory
 | 
| fsmove | 
<source> <destination> | 
Moves a file/directory
 | 
| fsread | 
<varname> <path> | 
Reads from a file and stores it into a variable
 | 
| fswrite | 
<path> <value> | 
Writes a string into a file
 | 
Values support:
- Math expressions (cannot contain space)
 
x+y Addition 
x-y Subtraction 
x*y Multiplication 
x/y Division 
x%y Modulo 
x^y Power 
x&y Bitwise AND 
x|y Bitwise OR 
x~y Bitwise XOR 
~x Bitwise REVERSE 
!x Bitwise NOT 
x<y Bitshift to left 
x>y Bitshift to right 
- Brackets are also supported
 
- Number constants
 
- Variables (getting values from them)
 
- String constants (have to be in 
"") 
Comparsion operators can be:
== Equal to 
!= Not equal to 
< Less than 
> Greater than 
<= Less than or equal to 
>= Greater than or equal to
Notes
- Code blocks are opened with 
[ and closed with ] 
- Numbers are 64-bit signed integers
 
- If a string or array indexof fails, it stores a 
-1 
Examples
Hello World
output "Hello, World"
Truth Machine
input inp
tonum inp
if inp == 0 [
  output 0
]
else [
  while 0 == 0 [
    output 1
  ]
]
Brainfuck Interpreter
This proves that this programming language is Turing complete
input code
string length len code
var index 0
array create cells 256
var pointer 0
while index < len [
  string charat char code index
  if char == "<" [
    var pointer pointer-1
    if pointer == -1 [
      var pointer pointer+1
    ]
  ]
  if char == ">" [
    var pointer pointer+1
    if pointer == 256 [
      var pointer pointer-1
    ]
  ]
  if char == "+" [
    array get cells value pointer
    var value value+1
    if value == 256 [
      var value value-1
    ]
    array set cells value pointer
  ]
  if char == "-" [
    array get cells value pointer
    var value value-1
    if value == -1 [
      var value value+1
    ]
    array set cells value pointer
  ]
  if char == "." [
    array get cells value pointer
    string fromcode value value
    output value
  ]
  if char == "," [
    input charinput
    if charinput == "" [
      var value 10
    ]
    else [
      string charat charinput character 0
      string tocode value character
    ]
    array set cells value pointer
  ]
  if char == "[" [
    array get cells value pointer
    if value == 0 [
      var i index
      var layer 0
      while i < len [
        string charat code character i
        if code == "[" [
          var layer layer+1
        ]
        if code == "]" [
          var layer layer-1
        ]
        if layer == -1 [
          var index i
        ]
        var i i+1
      ] 
    ]
  ]
  if char == "]" [
    array get cells value pointer
    if value != 0 [
      var i index
      var layer 0
      while i >= len [
        string charat code character i
        if code == "]" [
          var layer layer+1
        ]
        if code == "[" [
          var layer layer-1
        ]
        if layer == -1 [
          var index i
        ]
        var i i-1
      ] 
    ]
  ]
  var index index+1
]
Interpreter
"Maybe one day I will make interpreter for it." Dominicentek (talk) 20:11, 22 August 2021 (UTC)