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.

Numflow

From Esolang
Jump to navigation Jump to search

Numflow is an esoteric programming language created in 2026. It uses a coordinate-based, mode-driven architecture where execution is controlled by exact line counts, mathematical operators, and statement counters. Source files use the .nf extension.

The language treats variables as mathematical concepts—using the imaginary unit i to declare a variable's existence before assigning it a real value.

Syntax

Structure

A Numflow program must start and end with specific line-count declarations:

  • Start: (0,0)+N where N is the total number of lines in the program.
  • End: N/0= which intentionally divides the line count by zero to terminate the script.

Modes

Execution is divided into "modes" which dictate how the interpreter handles the code inside them. You enter a mode using 5--[mode].

  • 000: No mode (default/exit)
  • 001: Print (supports string interpolation with {variable})
  • 002: Variables
  • 003: File editing (append)
  • 004: File creation
  • 005: File deletion
  • 006: Math
  • 007: Conditions (007=condition, 007=%^ for else-if, 007=% for else)
  • 008: Key input (pauses until keypress, stores hex/ASCII value)
  • 009: Loops (009=count)

Statement Blocks

Code is wrapped in numbered blocks that identify the mode they belong to.

 +1&002:
 =x&i
 x=10
 1&002*

Variable Declaration

Variables must be declared before assignment. Using the imaginary number i signifies that the variable exists but has no real value yet.

 =a&i
 a=5

Examples

Hello, World!

 (0,0)+6
 5--001
 +1&001:
 Hello, World!
 1&001*
 6/0=

Fibonacci Sequence

 (0,0)+33
 5--002
 +1&002:
 =a&i
 a=0
 1&002*
 +2&002:
 =b&i
 b=1
 2&002*
 +3&002:
 =sum&i
 3&002*
 5--009
 +4&009:
 009=10
 5--006
 +5&006:
 sum = a + b
 5&006*
 5--001
 +6&001:
 {a}
 6&001*
 5--006
 +7&006:
 a = b
 b = sum
 7&006*
 5--009
 4&009*
 5--000
 33/0=

Output: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34

External resources