Where
Where is an esoteric programming language created by User:Ketok.
Language overview
Where operates on 4 memory cells, initially set to 1, 2, 3, 4. Each cell can contain value ranging from 0 to 255.
Statements
Where statement
Syntax:
WHERE condition action
Where statement executes action on all cells satisfying the given condition.
For example:
WHERE >2 SET 255
will set all memory cells with value higher than 2 to 255.
While statement
Syntax:
WHILE [ANY|ALL] condition ... END
While statement executes its contents while all/any cells satisfy the given condition.
Reset statement
Syntax:
RESET
Reset statement resets values of all cells to their initial state. It's mainly intended to be used in the interactive mode.
Conditions
- =n
- <n
- >n
Actions
- SET value
- ADD value
- SUB value
- INPUT
- OUTPUT
Interactive Mode
Interactive mode is a feature added in v0.2.0 release used to run Where code interactively in the terminal. In other words it executes REPL (Read, Evaluate, Print Loop) for Where. It can be entered by running Where interpreter without any command line arguments.
Examples
Truth machine
# Truth machine WHERE =1 INPUT WHERE =0 OUTPUT WHILE ANY =1 WHERE =1 OUTPUT END
Adder
# A simple program that adds two numbers together WHERE >1 ADD 251 WHERE =1 INPUT WHERE <253 ADD 128 WHERE =253 INPUT WHERE >253 SET 0 WHILE ANY >128 WHERE >128 SUB 2 WHERE >0 ADD 1 END WHERE =0 SET 255 WHERE <128 OUTPUT
Interpreter
Interpreter for Where is written in F# with FParsec. It can be downloaded from github.