Idiomorph

From Esolang
Jump to navigation Jump to search

An Idiomorph is a type of program that repeatedly takes its own output as its next input, producing a sequence of transformations. The process continues until a halting condition is reached, such as when the program produces the same output twice in succession or generates a designated halting string. The final output of an idiomorph can be either the complete stream of outputs produced during its execution or its last output.

Overview

  • Inputs and outputs may take any form, including text, images, integers, floats, or other data types.
  • Any finite state machine can be expressed as an idiomorph if arbitrarily long strings are permitted.
  • An idiomorph program by itself only defines the mapping from input to output. A separate machine or program is required to run the program repeatedly until a halting condition is met.
  • Idiomorphs can continue to run without ever reaching a halting condition.

Example

The more simple side of idiomorphs can be described using input-output mappings. For instance, to generate the word Hello, the following mapping may be used:

Input Output
H
H He
Hel Hell
Hello Hello

Here, the final mapping returns Hello again, so the program repeats the same output twice. This reaches the halting condition, ending the process.

Etymology

The term derives from the Greek roots:

  • idios (self)
  • morphē (form, change)

The name was created by User:RainbowDash

See also