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.

Hyperon

From Esolang
Jump to navigation Jump to search
Hyperon
Paradigm(s) Imperative
Designed by Hakerh400
Appeared in 2020
Computational class Uncomputable
Major implementations Unimplementable
File extension(s) .txt

Hyperon is a hypercomputable programming language that is strictly more powerful than Turing machine. It is a brainfuck derivative with the ability to solve the Halting problem.

Memory

Same memory model as in brainfuck (8-bit cells, unlimited tape).

Instructions

  • > - Increment the data pointer
  • < - Decrement the data pointer
  • + - Increment the current cell
  • - - Decrement the current cell
  • , - Read a character from stdin and put it to the current cell
  • . - Output a character from the current cell
  • [*] - Repeat instructions inside brackets while the current cell is non-zero
  • {*} - If the instructions inside braces halt in finite time, increment the current cell, otherwise do nothing

Current cell is the cell pointed by the data pointer. Here * means that anything can be there.

Examples

These examples describe only the last instruction, because we assume the reader is familiar with previous instructions.

For example, {} (empty content between braces) is identical to + instruction, because there are no instructions inside, so it will halt in finite time, and thus it is equivalent to incrementing the current cell.

Another example: {-}. It is also equivalent to +, because whatever happens inside {*} does not have effects to the surrounding code (memory will not be changed and data pointer will also remain unchanged after exiting the {*} braces, except incrementing the memory cell if the content halts). Also, any I/O that is performed inside {*} will be reset when we exit {*}.

This is equivalent to the cat program:

,[
  {[-]+[...,.,.,,,>>>>>>[-]+]} // Just to show that this has no effects
  .,
]

Braces can also be nested, like {{}}. It is important to note that {*} is a single instruction (unlike [*]) and takes a single tick, so {{*}} is identical to +, independently of the content inside (because the inner {*} takes a single tick, and thus halts in finite time).

References