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.
Huit
Huit means 'eight' in French. The joke is that 'eight' can refer to the eight ball, and cue sounds like 'queue'. Huit is a one-dimensional queue-based Turing-complete esoteric programming language created by User:TheCanon2.
Commands
Huit has a single queue. The data in the queue can only be a float or a string. Huit has sixteen commands.
Arithmetic operators
| Command | Action |
|---|---|
| + | Dequeue the first two items, enqueue the sum. |
| - | Dequeue the first two items, enqueue the difference between the first item dequeued and the second item dequeued. |
| * | Dequeue the first two items, enqueue the product. |
| / | Dequeue the first two items, enqueue the quotient of the first item dequeued and the second item dequeued. |
| % | Dequeue the first two items, enqueue the modulo of the first item dequeued and the second item dequeued. |
| = | Dequeue the first two items, enqueue 1 if they are equal, else enqueue 0. |
The plus and modulo are the Python plus and modulo, meaning they can be applied to strings.
Computational operations
| Command | Action |
|---|---|
&x |
Enqueue a float with the value x. |
&"s" |
Enqueue a string with the value s. |
| : | Duplicate the first item of the queue. |
| ? | Dequeue. |
(s) |
Define a jump location with label s. |
[c] |
Dequeue the first item, then follow switch case c. |
The switch case can take any amount of parameters. For example, statement [a,b,c,d] means goto a if the value dequeued was 0 or empty, goto b if the value dequeued was 1, goto c if the value dequeued was 2, goto d if the value is anything else. The last statement is always the 'anything else' statement.
Commas, brackets, and square brackets should never be used in the name of a jump location.
I/O functions
| Command | Action |
|---|---|
| > | Dequeue and print the first item. |
| >' | >, but convert into an ASCII character if a float. |
| < | Enqueue a character from the input. |
| <' | Prompt the user for a float and enqueue the entire input. |
Examples
Hello, World!
&"Hello, World!">
Deadfish interpreter
&0(checki)<&"i":?:=:?:?[checkd,i](checkd)&"d":?:=:?:?[checks,d] (checks)&"s":?:=:?:?[checko,s](checko)&"o":?:=:?:?[checkh,o](checkh)&"h":?=:?[checki,h] (i):??&1+:[256](d):??:[checki,dod](dod)&1-:[256](s):??:*:[256](o):::??>[checki] (256)&256:=:?[checki,del](del)?&0:[checki](h)
Truth machine
<':[0,1](1)::>[1](0)>
Shape machine
(shape)<'&3+&0.86*:>[shape]
Cat
(cat)<>[cat]
If there is nothing to dequeue, nothing will be dequeued.
99 bottles of beer
&100(Loop)&1&"%d bottles of beer on the wall.":&1&"%d bottles of beer.":&1 &"Take one down, pass it around,\n%d bottles of beer on the wall.":&2 -:?-:?-:?-:?%%%:?>>>:[End,End,Loop](End)
Uses Python modulos to replace %d with the appropriate number. Newlines have no meaning in Huit.
XKCD Random Number
&4>
Print all of Unicode
&0&0>'(A)&1+::>'[A]
Computational class
Cyclic tag system
Huit is Turing-complete for cyclic tag system can be trivially compiled into it.
&0 Write 0 to the data-string.
&1 Write 1 to the data-string.
? Delete the leftmost bit.
&A[Loop] Repeat the loop.
However, this process always loops.
Minsky machine
A more concrete proof of Turing-completeness would be to compile a section 14.2 Minsky machine with two sub-registers into Huit.
&2* Increment sub-register 2
&3* Increment sub-register 3
&2:%:?[div,pass](div)&2/:[jump](pass) Conditionally decrement sub-register 2
&3:%:?[div,pass](div)&3/:[jump](pass) Conditionally decrement sub-register 3
Implementations
The Python script in this article is an incomplete interpreter.