Deadfish i
The Deadfish i language is an object-oriented version of Deadfish with a BF-like syntax, created by Abraham Karplus. A Deadfish i file (extension .dfi
) is a sequence of object declarations. Note that this improved version does not restrict unsquared values to one byte.
Naming
A lot of child languages take the name of their parent and add "++". However, the Deadfish family uses the "i" command to increment. Hence, "Deadfish i".
Alphabet
The Deadfish i alphabet is much like the BF one, with a few differences:
- No
,
command: Deadfish i does not support input. - The
#
character start a comment that goes to the end of the line. - Unknown character are errors, not ignored.
Object declaration
An object is declared with the syntax
name<method
where name
is a positive integer or 0
and method
is a sequence of Deadfish i commands.
Commands
Command | Name | Pseudocode |
---|---|---|
+ | Increment | self.val += 1 |
- | Decrement | self.val -= 1 |
> | Square | self.val **= 2 |
[x | Call (static) | x.method() |
] | Call (dynamic) | self.val.method() |
. | Output | print(self.val) |
Calling
A static call [
is followed by a positive integer.
The method of the object with that number is called.
A dynamic call is a plain ]
. It calls the method of the object n
, where n
is the value of the object using the dynamic call command. The value must be positive.
Beginning
The program is begun by an implicit call to
0.method()
Examples
Prints "1":
0<+.
Infinite loop (requires two objects since 0
cannot be re-called):
0<[1 1<+.[1