Deadfish++
Jump to navigation
Jump to search
Paradigm(s) | Functional |
---|---|
Designed by | User:Europe2048 |
Appeared in | 2023 |
Computational class | Turing complete |
Major implementations | Unimplemented |
File extension(s) | .dfp |
Deadfish++ is an esolang by Europe2048 which focuses on extending Deadfish.
Instructions & more
Command | What it does |
---|---|
i | Increases the current memory cell |
d | Decreases the current memory cell |
s | Squares the current memory cell |
0 | Resets the current memory cell |
o | Outputs the memory cell as a number (error if it's a string) |
c | Outputs the memory cell as a Unicode character, with no newline |
S | Outputs the memory cell as a string |
l | Move the memory pointer to the left |
r | Move the memory pointer to the right |
n | Print all the memory pointers as numbers in order |
p | Print all the memory pointers as characters in order |
y | Input a number and store its value in the current memory cell |
u | Input a string and store it in the current memory cell |
ƒ | Start of function definition. Next letter is the name of the function (letter that isn't a built-in function or whitespace). |
( | Opening loop: jump past the matching ) if the memory cell is 0 or "" |
) | Closing loop: jump at the matching ( if the memory cell isn't 0 or "" |
[ | Opening infinite loop |
] | Closing infinite loop |
{ | Start of comment |
} | End of comment |
< | Start of code in function definition |
> | End of code in function definition |
f, e | If and else, respectively. Syntax: f(condition):code e:code Conditional statements must be separated by spaces and ended with a semicolon.
|
a~b | Store a into the variable b. b's name must be a Unicode character that isn't occupied by another function. The name also must not be a whitespace. Must be ended with a semicolon. |
"a" | String literal. Can be used in the a ~ b command and conditionals. |
mvar | Store a variable into the current memory cell. |
tnumber | Set the tab indentation to the specified number. Number must be one decimal digit greater than 0, in order not to break things. |
Rvalue | Return a value. |
number | Number literal. |
[number] | Read memory cell number number, and return it. |
g(number) | Goes to the corresponding memory cell. |
h | Break from a loop. |
P | Push: take the first character of string and put it to the right. |
E | Push from end: take the last character of string and put it to the right. |
Sequence | Meaning |
---|---|
\n | Newline |
\t | Tab |
\r | Carriage return |
\b | Backspace |
\f | Form Feed |
\v | Vertical Tab |
\0 | null |
\? | Replacement Character |
\o | Object Replacement Character |
\" | A literal quote |
\\ | A literal backslash |
\hhhhh | Unicode (base 16). Put a g in the first spot if it's 10xxxx. |
\nnnnnn | Unicode (base 10) |
Statement/expr. | Meaning |
---|---|
a = b | Equal operator |
a > b | Greater than |
a < b | Less than |
a + b | Addition |
a - b | Subtraction |
a * b | Multiplication |
a / b | Division |
a ^ b | Exponents |
a % b | Modulo |
@ a | Square root |
#aaa arguments seperated by spaces | Other operations (a = letter/number) |
List of other functions:
Example: g xxx = Function name (g = number of arguments) 1 sin = Sine 1 cos = Cosine 1 tan = Tangent 1 csc = csc 1 sec = sec 1 cot = cot [^ Add 1 for inverse, and h for hyperbolic ^] 1 isn = Inverse sine 1 ics = Inverse cosine 1 itn = Inverse tangent 1 lg2 = Log base 2 1 lga = Log base 10 1 lge = Natural log 2 lgb = Log base n 1 fac = Factorial 0 pii = Pi 0 eee = e (number) 0 gdr = The Golden Ratio 0 gam = γ (number) 0 inf = Infinity 2 com = nCr 2 prm = nPr 2 rnd = Random integer 2 rdf = Random float 2 nrt = nth root 1 flr = Round down 1 cei = Round up 1 rou = Round 2 lcm = Least Common Multiple 2 gcd = Greatest Common Divisor 1 sgn = Sign of a number (-1 if negative, 1 if positive) 1 abs = Absolute value (this allows things like #abs a * #sgn a = a for true) 0 dgr = Convert to degrees 0 rad = Convert to radians 0 grd = Convert to gradians
Unlike Deadfish, memory pointers can be 256 or negative.
Unlike brainfuck, there are memory pointers with negative numbers (0th, -1st, -2nd...)
Unlike other cell-based languages, memory cells can contain strings.
Errors
Syntax error - Syntax error Convert error - You can't convert a string to a number! Unicode error - The character you're trying to output is out of range (>1,114,111 or <0) Math error - Either the operation is invalid, or the expression returns an invalid result
Example programs
Hello, World!
"Hello, world!"~j;mjS
Cat program
uo
Truth machine
y~a;f(a = 0):0iiisddsdc;f(a = 1):0iiisdds[c]
Fibonacci
Repeats 50 times.
1~v;1~w;2~x;iiisddsi(w~v;x~w;v+w~x;)
Factorial
1~a;2~b;iiisddsi(mao;a*b~a;b+1~b;)
Real Quine
"~j;riisiisddclmjSrclmjo"~j;riisiisddclmjSrclmjo
Turing-completeness
Since Deadfish++ has all the commands from brainfuck, and brainfuck is turing-complete, then Deadfish++ is too.
Interepters
None yet.