Come Here is a programming language devised by User:Smjg. Its aim is to do away with the
GOTO statement that is considered harmful by many people, but nonetheless is far too common in the world's languages.
To achieve this, the
GOTO statement is replaced by
COME FROM. Indeed,
COME FROM is the only control flow statement in Come Here. Loops and conditionals must be simulated by using
COME FROM with a computed argument.
The only data type is the integer. Strings are stored as their little-endian integer representations. There is no defined limit on the size of a Come Here integer. In the official implementation it is unlimited (except by the available memory, of course), but this is not a requirement.
Syntax and statement semantics
Each statement consists of an optional numeric label, a keyword (or in one case, two keywords), followed by one or more juxtaposed arguments. Whitespace is irrelevant.
||Assigns value exp to variable var.|
||Receives a line from stdin and stores it in var.|
||Writes the arguments in string form to stdout.|
||Transfers control here after the statement labelled exp is executed.|
The following program prints the message "Hello, world!" ten times.
10 CALL 10 count COME FROM 10 + SGN count TELL "Hello, world!" NEXT 11 CALL count - 1 count
The second line in this code takes the sign of the variable count (0-1, 0 or 1), and therefore comes from the statement labelled 9, 10 or 11 depending on the value of count. It is illegal to
COME FROM a non-existent label, hence the dummy label 10. In this instance, count will never be negative; therefore there is no need for a statement to be labelled 9.
As long as the implementation places no limit on the size of the integer data type, Come Here is Turing complete since it can simulate a Minsky machine.
Because Come Here has no built-in support for arrays or other data structures, such things must be encoded by using a defined number of integer variables.