InfiniTUM

From Esolang
Jump to navigation Jump to search

InfiniTUM is a language made by User:iconmaster that stands for Infinite TUring Machine. It is a language that describes Turing machines with one twist: there is an infinite tape with infinite values, and the head has an infinite number of states. Rather than rulesets, state and value change is dependant on mathematical expressions.

Description

An InfiniTUM program is a series of if statements: If the state is in a range, set the state and the value to the result of an expression, and then move the head. They are structured like this:

IF condition
 STATE state_expression
 VALUE value_expression
 MOVE direction

The first three arguments, condition, state_expression and value_expression, must be mathematical expressions, and the last one must be either <, >, or X. The first argument is the condition to check. If it is true, the machine sets the head's state to the second argument, the value under the head to the third, and moves the head based on the fourth. The following variables may be used:

  • s: the head's state number.
  • v: the value under the head.

If the MOVE statement is a <, it moves the head to the left; if it is >, it goes to the right; if it equals X, the program halts.

The tape is initially filled with all 0's, and the state is 1.

Examples

Counts up forever:

IF s != 0
 STATE s+1
 VALUE s
 MOVE >

Interpreter

  • Common Lisp implementation of the InfiniTUM programming language.