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.

IF UPPERCASE KEYWORDS == ESOTERIC THEN DIE ELSE DIE END

From Esolang
Jump to navigation Jump to search
This is still a work in progress. It may be changed in the future.

IF UPPERCASE KEYWORDS == ESOTERIC THEN DIE ELSE DIE END is a stupid esolang by User:raiseafloppafan7741 in 2025 based on uppercase keywords in programming languages such as COBOL and Fortran, and in general naming conventions such as TitleCase (PascalCase), camelCase, snake_case, SCREAMING_SNAKE_CASE, and kebab-case. Despite the name however, the language has very little to do with those, or anything coherent really.

Features

This language his based on awarding/deducting points to different naming convention styles. There are 7 styles which function as integer accumulators: UPPERCASE KEYWORDS, lowercase keywords, TitleCaseNames, camelCaseNames, snake_case_names, SCREAMING_SNAKE_CASE_NAMES, and kebab-case-names.. They are of unspecified size, but they are signed and the size (in bits) of the accumulators is initially stored in snake_case_names, and if it is unbounded then the value is -1.

Points can be awarded to a style with AWARD POINT TO [style] and deducted from a style with DEDUCT POINT FROM [style].

The only form of control is GOTO, which in the eyes of some automatically makes this language horrible. GOTO statements are of the form:

GOTO [LABEL]

Or using a style as a line number starting from 0:

GOTO [style]

Conditional form

GOTO [LABEL|VARIABLE] IF [VARIABLE 1] [>|>=|=|<=|<] [VARIABLE 2]

Jumping to a non-existent address or label halts the program.

Labels are just

LABEL [label name]

The label name may be any style or even mixed styles, so long as it doesn't contain a space character. They can also be used as comments.

The twister operation is just this monstrosity

TWIST [A] WITH [B]

Which results in a value

Where results in 1 if is less than or equal to 1.

USE BEST KEYWORDS prints the accumulator with the largest value as a byte.

DIE ends a program.

Ironically despite the name, this language has no if-else statements.

Computational class

If the accumulators are unbounded, then one could (almost) trivially translate a program for a 2-register Minsky machine to IF UPPERCASE KEYWORDS == ESOTERIC THEN DIE ELSE DIE END. Otherwise, the language is a finite-state automaton.

The program can be started with this, which makes sure that the accumulators are of unbounded size, then resets UPPERCASE KEYWORDS:

DEDUCT POINT FROM UPPERCASE KEYWORDS
GOTO start_minsky_machine IF snake_case_names == UPPERCASE KEYWORDS
DIE
LABEL start_minsky_machine
AWARD POINT TO UPPERCASE KEYWORDS

After this part, the initial state for both registers in UPPERCASE KEYWORDS and lowercase keywords can be loaded in.

Incrementing the first register would look like this:

LABEL [state name]
AWARD POINT TO UPPERCASE KEYWORDS
GOTO [next state]

Jumping if the first register is zero else decrement it would look like this:

LABEL [state name]
GOTO [zero state] IF UPPERCASE KEYWORDS == snake_case_names
DEDUCT POINT FROM UPPERCASE KEYWORDS
GOTO [next state]

Incrementing the second register would look like this:

LABEL [state name]
AWARD POINT TO lowercase keywords
GOTO [next state]

Jumping if the second register is zero else decrement it would look like this:

LABEL [state name]
GOTO [zero state] IF lowercase keywords == snake_case_names
DEDUCT POINT FROM lowercase keywords
GOTO [nonzero state]

And after the body of the program goes the ending state:

LABEL [end state]
DIE

Since Minsky machines with at least two registers are Turing-complete, IF UPPERCASE KEYWORDS == ESOTERIC THEN DIE ELSE DIE END is Turing-complete as well.

Examples

Infinite loop

GOTO TitleCaseNames

This works as this is on line 0 and the accumulators (except for snake_case_names) are all initialized to zero.

Looping counter

AWARD POINT TO kebab-case-names
GOTO snake_case_names

Truth-machine

Since IF UPPERCASE KEYWORDS == ESOTERIC THEN DIE ELSE DIE END has no input, the input is pre-loaded into UPPERCASE KEYWORDS. This one only accepts numeric 1 and rejects everything else and outputs raw binary instead of ASCII. Output does not work properly if UPPERCASE KEYWORDS is negative, as the value of lowercase keywords is printed instead.

AWARD POINT TO lowercase keywords
LABEL truth
DEDUCT POINT FROM lowercase keywords
USE BEST KEYWORDS
AWARD POINT TO lowercase keywords
GOTO truth IF UPPERCASE KEYWORDS == lowercase keywords
DIE

XKCD Random Number

AWARD POINT TO UPPERCASE KEYWORDS
AWARD POINT TO UPPERCASE KEYWORDS
AWARD POINT TO TitleCaseNames
AWARD POINT TO TitleCaseNames
TWIST UPPERCASE KEYWORDS WITH TitleCaseNames
TWIST UPPERCASE KEYWORDS WITH TitleCaseNames
DEDUCT POINT FROM TitleCaseNames
TWIST UPPERCASE KEYWORDS WITH TitleCaseNames
DEDUCT POINT FROM UPPERCASE KEYWORDS
DEDUCT POINT FROM UPPERCASE KEYWORDS
DEDUCT POINT FROM UPPERCASE KEYWORDS
USE BEST KEYWORDS
DIE

Subtraction program (Minsky machine)

This uses the translation from a 2-register Minsky machine in the Computational class section above. In this example program, we are calculating 7 - 3. Indentation is added for readability, but has no effect on the code.

DEDUCT POINT FROM UPPERCASE KEYWORDS
GOTO start_minsky_machine IF snake_case_names == UPPERCASE KEYWORDS
  DIE
LABEL start_minsky_machine
AWARD POINT TO UPPERCASE KEYWORDS
LABEL input_a_7
  AWARD POINT TO UPPERCASE KEYWORDS
  AWARD POINT TO UPPERCASE KEYWORDS
  AWARD POINT TO UPPERCASE KEYWORDS
  AWARD POINT TO UPPERCASE KEYWORDS
  AWARD POINT TO UPPERCASE KEYWORDS
  AWARD POINT TO UPPERCASE KEYWORDS
  AWARD POINT TO UPPERCASE KEYWORDS
LABEL input_b_3
  AWARD POINT TO lowercase keywords
  AWARD POINT TO lowercase keywords
  AWARD POINT TO lowercase keywords
LABEL state1
  GOTO state4 IF lowercase keywords == TitleCaseNames
  DEDUCT POINT FROM lowercase keywords
LABEL state2
  GOTO state3 IF UPPERCASE KEYWORDS == TitleCaseNames
  DEDUCT POINT FROM UPPERCASE KEYWORDS
  GOTO state1
LABEL state3
  AWARD POINT TO lowercase keywords
LABEL state4
  DIE

A+B Problem

The inputs must be preloaded in UPPERCASE KEYWORDS and lowercase keywords, with the result being stored in the former. It accepts negative integers as well.

GOTO add_negative IF lowercase keywords < TitleCaseNames
LABEL add_positive
  GOTO end IF lowercase keywords == TitleCaseNames
  AWARD POINT TO UPPERCASE KEYWORDS
  DEDUCT POINT FROM lowercase keywords
  GOTO add_positive
LABEL add_negative
  GOTO end IF lowercase keywords == TitleCaseNames
  DEDUCT POINT FROM UPPERCASE KEYWORDS
  AWARD POINT TO lowercase keywords
  GOTO add_negative
LABEL end
DIE

See also