|ι||ἵστημι (raise / set up)||
||Ι||Begin statement def|
|χ||χάζω (draw back)||
||Χ||Set x to 0|
|θ||θʹ (9) a square number||
||Θ||End statement def (Θέτε! / Make!)|
|υ||ὑπάγω (bring forth)|| display
||Υ||display x as Unicode character|
Details, and modifications from Deadfish / x
- Reinstates the original Deadfish 'overflow' arithmetic behaviour (reset to 0 iff accumulator equals -1 OR 256). It is a feature, not a bug. Essential to allow values over 256 and enable the Unicode output required by ΙΧΘΥΣ.
- Output is Unicode, not ASCII.
- Does not refer to the definable 'functions' (The
Xcommand in Deadfish x,
Ιin ΙΧΘΥΣ) as 'functions' since they take no arguments, return no results, and can only produce side-effects. In ΙΧΘΥΣ they are called 'statements', and have a number of important features, listed below.
- Adds a dedicated symbol (sigma) for labelling new statements.
- Statements are a collection of one or more statement symbols associated with a symbol,
- There is no execute command (Deadfish x
C) required to trigger a defined statement, ΙΧΘΥΣ simply interprets the symbol if it can find a definition.
- Statement definitions can be nested.
- Statements definitions can be recursive.
- Statement symbols can be read before they are defined (or after they have been removed). There is no error on unrecognised symbols, simply a NOOP.
- Applying subsequent statement definitions (
Ι) to an existing symbol *appends* to the statement definition, not overwrites.
- A statement definition is *removed* from storage if the Deadfish 'overflow' condition is triggered while reading from its definition. Only the symbol definition is removed, copies currently being read can continue execution.
- Built-in command definitions are *not* appendable or removable, but they can be overwritten with new statement definitions that use the original command symbol.
"Hello, World!" (direct port from the Deadfish x version)
OUTPUT: Hello, world!
A more representative example for ΙΧΘΥΣ is to print 'Hello World' in Classical Greek:
ΙΧΘΥΣ is not just limited to Greek, but can output from any Unicode block, for example, the Phoenician alphabet:
Since ΙΧΘΥΣ is a superset of Deadfish, it is trivial to create a compliant Deadfish interpreter, e.g. for standard "idso" version:
ΙΧΘΥΣ was in part designed by following a classical Greek theme of "physical scribal computing" using the following parts:
- A counting board (abacus) and pebbles to track the tally. (accumulator: *x*)
- A large pithos (storage jar) to store inscribed ostraka (clay fragments)
- A stack of papyrus sheets to track current symbols (primary storage)
- A line in the sand creating two rows, (2 register stacks)
- one above for a list of ostraka currently being read
- the other below for a list of ostraka currently being written
- A magic fish that can manifest Unicode specification characters
To program in ΙΧΘΥΣ you will need the ability to input Greek characters. Installing a Greek Polytonic keyboard for your operating system is required. Or you could copy and paste from the table above. There is currently no Esolang:Categorization#Source_format for text-based, but non-Latin source other than Category:CJK. ΙΧΘΥΣ is deliberately occupying this space.