Gödelang
Gödelang is an esolang created by User:TJC games. It's based off of Gödel numbering, and it's just another Brain**** clone.
Interpretation
Each program is represented as a number, which is read by breaking it down into its prime factors and using the powers as the instructions. If it uses a number not listed in the below table, it's recompiled and run. The powers are as follows:
Gödelang 1.0 value | BF alternative | Instruction |
---|---|---|
0 |
end of file | Terminate program |
1 |
> |
Move pointer 1 byte to the right |
2 |
< |
Move pointer 1 byte to the left |
3 |
+ |
Increase byte at pointer by 1 |
5 |
- |
Decrease byte at pointer by 1 |
7 |
++++++++++++++++ |
Increase byte at pointer by 16 (= 100002) |
9 |
---------------- |
Decrease byte at pointer by 16 (= 100002) |
10 |
. |
Output ASCII character stored in byte at pointer |
11 |
, |
Input ASCII character and store in byte at pointer |
13 |
[ |
If byte at pointer = 0, then skip to next 14 |
14 |
] |
If byte at pointer != 0, then skip to previous 13 |
Gödelang 1.1 value | BF alternative | Instruction |
---|---|---|
0 |
end of file | Terminate program |
1 |
> |
Move pointer 1 value to the right |
2 |
< |
Move pointer 1 value to the left |
3 |
+ |
Increase value at pointer by 1 |
5 |
- |
Decrease value at pointer by 1 |
7 |
. |
Output ASCII character stored in value at pointer |
9 |
none | Output value stored in value at pointer |
10 |
, |
Input ASCII character and store in value at pointer |
11 |
none | Input value typed in (return to enter, any letters sets to 0) |
13 |
[ |
If byte at pointer = 0, then skip to next 14 |
14 |
] |
If byte at pointer != 0, then skip to previous 13 |
15 |
none | If byte at pointer = 0, then skip to next 17 |
17 |
none | No function, except for use with 15 |
19 |
[-] or [+] |
Set value at pointer to 0 |
Gödelang 2.0 value | BF alternative | Instruction |
---|---|---|
0 |
end of file | Terminate program |
1 |
> |
Move pointer 1 value to the right |
2 |
< |
Move pointer 1 value to the left |
3 |
+ |
Increase value at pointer by 1 |
5 |
- |
Decrease value at pointer by 1 |
7 |
. |
Output ASCII / UTF-8 / UTF-16 character stored in value at pointer |
9 |
none | Output value stored in value at pointer |
10 |
, |
Input ASCII / UTF-8 / UTF-16 character and store in value at pointer |
11 |
none | Input value typed in (return to enter, any letters sets to 0) |
13 |
[-] or [+] |
Set cell to zero |
-588000 |
[->+<] |
Useful value 1: Add value to cell to right |
Notes for v2: If the sign is positive, it's a if loop. If the sign is negative, it's a while loop. In v2, you cannot have while ends in if loops. I don't think that there is a way to interpret one instruction as another, but if there is a valid prime factorisation sequence that, at the top level, only contains integers, then v2 is henceforth a null language.
Examples
Cat program
An infinite cat program, equivalent to the brainfuck code ,.[,.]
and conforming to the Gödelang version 1.1, can be encoded in the Gödel number
59250896327476337572570276385712371250000000000
In version 2, the program seems to be too close to 0 to be calculated. It is equivalent to
24 * 5^(-452 093 906 250)
Truth-machine
Harnessing the possibility to input and output integer values, the Gödelang version 1.1 instructions 11, 13, 9, 14, 9
are realized in this program:
10198658019570622936267207428000000000
Interpreter
- Common Lisp implementation of the Gödelang programming language. This includes an interpreter and converters betwixt brainfuck and Gödelang.