Sceql
- This language is a derivative of Qdeql.
Sceql is an esoteric programming language devised by Scott Feeney in 2005, which provides a single byte queue as the only form of memory available to programs. The queue can never be empty, and data can never be removed from it once enqueued into it. Initially the queue has one value of 0.
Sceql was originally intended as a revised version of Qdeql with an easier to use and more practical instruction set, but with the additional challenge of a queue that grows indefinitely and never shrinks.
Instructions
Instruction | Description | |
---|---|---|
=
|
NEXT | Dequeue a byte and enqueue it again |
-
|
DEC | Decrement the byte that would be dequeued next (wrapping) |
_
|
INC | Increment the byte that would be dequeued next (wrapping) |
\
|
BEGIN | Skip to the instruction after the corresponding END if the byte that would be dequeued next is zero |
/
|
END | Go back to the corresponding BEGIN |
!
|
GROW | Enqueue a new zero byte |
&
|
INPUT | Read a byte from stdin and enqueue it (0 for EOF) |
*
|
OUTPUT | Dequeue a byte, write it to stdout, and enqueue it again |
Example programs
Hello, World!
This program will print the string "Hello, World!" followed by a newline. Every line of the program corresponds to one character; the queue eventually will contain three bytes, one used for H, e, l, o, W, r and d, one for the comma, space and exclamation mark, and one for the newline.
________________________________________________________________________* _____________________________* _______* * ___* !=____________________________________________* =------------* ________* =--------* =___* =------* =--------* _* !==__________*
Cat program
-&=\&*_\-=_/-=/
In clear text, with the state of the queue in comments (assuming everything which is not an instruction is ignored):
[0] DEC INPUT NEXT [first 255] BEGIN while not eof [prev ... 255] INPUT OUTPUT [... 255 curr prev] INC BEGIN while not 255 DEC NEXT INC END DEC NEXT [curr ... 255] END
Computational class
Sceql is Turing-complete. See Sceql Turing-completeness proof for more information.