We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.

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.

‎ ‎ ‎ ‎ ‎‎ ‎ ‎ ‎ ↳ The mapping can be defined by a Turing-complete language, so it is not limited to a finite mapping.

  • 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
Hell Hello
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