Needle
Needle is an esolang by User:ChuckEsoteric08 in 2025.
Description
The language uses wrapping tape of 3 cells and program inside an infinite loop
_
- decrements current cell and moves right. Decrementing zero does nothing.(...)
- increment current cell and if result is 1 then run code inside the brackets. Can be nested.
There are optional IO commands:
;
- input into a current cell. Can be either number or ASCII character depending on the implementation*
- output cell as either number or ASCII character depending on implementation
Computational class
Needle is Turing-complete since Minsky machine could be compiled into it. For the simplicity I would use a subset called Infinite Minsky machine (IMM).
Notation
Here I would use a specific notation where [x;y]
would execute code x
y
times. I would also definine following commands:
NEXT = ()_ DEC = _ NEXT NEXT
Infinite Minsky machine
Language has 2 registers: A and B. Program like in Needle would be inside an infinite loop.
INC x y
Increment x
and move y
commands forward.
DEC x y
Decrement x
(if 0 do nothing) and move y
commands forward.
IF x y
If x
is 0 move y
commands forward, else execute next one.
From IMM to Needle
INC A y
becomes:
DEC ( NEXT () NEXT NEXT [();y] ) DEC
Becoming:
_()_()_(()_()()_()_[();y])_()_()_
INC B y
becomes:
DEC ( NEXT NEXT () NEXT [();y] ) DEC
Becoming:
_()_()_(()_()_()()_[();y])_()_()_
DEC A y
becomes:
DEC ( NEXT _ NEXT [();y] ) DEC
Becoming:
_()_()_(()__()_[();y])_()_()_
DEC B y
becomes:
DEC ( NEXT NEXT _ [();y] ) DEC
Becoming:
_()_()_(()_()__[();y])_()_()_
IF A y
becomes:
DEC ( () NEXT ( NEXT NEXT [();y-1] NEXT ) _ NEXT ) DEC
Becoming:
_()_()_(()()_(()_()_[();y-1]()_)_()_)_()_()_
IF B y
becomes:
DEC ( () NEXT NEXT ( NEXT [();y-1] NEXT NEXT ) _ ) DEC
Becoming:
_()_()_(()()_()_(()_[();y-1]()_()_ )_)_()_()_
Example
Set Register A to 4 and then decrease it to zero, after which increment register B in an infinite loop:
INC A 1 INC A 1 INC A 1 INC A 1 IF A 2 DEC A 6 INC B 7
Becomes:
_()_()_(()_()()_()_())_()_()_ _()_()_(()_()()_()_())_()_()_ _()_()_(()_()()_()_())_()_()_ _()_()_(()_()()_()_())_()_()_ _()_()_(()()_(()_()_()()_)_()_)_()_()_ _()_()_(()__()_()()()()()())_()_()_ _()_()_(()_()_()()_()()()()()()())_()_()_