ΙΧΘΥΣ

From Esolang
Jump to: navigation, search

ΙΧΘΥΣ (or "ixqus") means 'fish' in Classical Greek. It is a thematic derivative of Deadfish_x, and therefore a superset of the original Deadfish.

Commands

Like Deadfish it has a single accumulator, x. Like Deadfish_x it has four extra commands which adds the ability to define statements.

letter term action CAPITAL CAPITAL action
ι ἵστημι (raise / set up) x+1 Ι Begin statement def
χ χάζω (draw back) x-1 Χ Set x to 0
θ θʹ (9) a square number x*x Θ End statement def (Θέτε! / Make!)
υ ὑπάγω (bring forth) display x Υ display x as Unicode character
ς σύμβολον (symbol/token) Σ

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 X command 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.

Examples

"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:

   ΙΣΧιιιιιθιιιιιιθΘΙϛχχχχχχχΘΙσϛϛιΘΙϲιιιιιιιιΘΣσσΥϲιιΥϲΥϲΥισΥΧιιθιιθϲΥΣσσσΥϲϲϲϲϲχχχΥιιιιΥϛΥϛΥΧιιιιιθϲΥ

OUTPUT: Χαιρε,Κοσμε!

ΙΧΘΥΣ is not just limited to Greek, but can output from any Unicode block, for example, the Phoenician alphabet:

   ΧΙΣιΥΘΙσχχχχχχχχχχχχχχχχχχχχχχχχχχχχΘιιιθιιιιιιιιθσθχχσσσσσσσσσσΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣΣ

OUTPUT: 𐤀𐤁𐤂𐤃𐤄𐤅𐤆𐤇𐤈𐤉𐤊𐤋𐤌𐤍𐤎𐤏𐤐𐤑𐤒𐤓𐤔𐤕

Since ΙΧΘΥΣ is a superset of Deadfish, it is trivial to create a compliant Deadfish interpreter, e.g. for standard "idso" version:

   ΙiιΘΙdχΘΙsθΘΙoυΘΧ

Theme

ΙΧΘΥΣ 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

Source Format

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.

Computational Class

External resources