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.
Noassign
- This article is not detailed enough and needs to be expanded. Please help us by adding some more information.
Noassign is a language that (as it should be clear from the name) does not have the assignment operator. In spite of that, it has variables but not a stack or a queue.
General syntax
The Noassign program is a set of lines. Each line is constructed such a way:
[headings of loops]operator[operand1][operand2];operator[operand1][operand2];operator[operand1][operand2];...;
Loops
A heading of a loop consists of the maximum value of the loop variable and the name of this variable. For example, 10i means that the line will be implemented 10 times and the variable i will have values from 0 to 9.
If a line has several headings of loops it means that the loops are inserted into each other. For example, 10i20j is approximately equivalent to C code for(i=0;i<10;i++)for(j=0;j<20;j++).
Operators and their operands
Operators
+, -, *, /, % – arythmetic operators (addition, subtraction, multiplication, division and finding of remainder). Each of them has two operands going in the same order as in mathematic formulas.
&, | – bitwise AND and OR respectively, 2 operands.
! – bitwise NOT, 1 operand.
<, =, > – comparison, 2 operands.
: – output, 1 operand.
^ – one-way transfer inside the line, 1 operand (the number of the operator).
_^ – one-way transfer, 1 operand (the number of the line).
? – conditional transfer inside the line, 2 operands: the 1st one is the condition, the 2nd one – the number of the operator.
_? – conditional transfer, 2 operands: the 1st one is the condition, the 2nd one – the number of the line.
_ – repetition, returns its operand.
" – string operator.