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.
Kitchen
Kitchen is a declarative, non-Turing-complete esoteric programming language in which programs are written as surreal domestic narratives. Characters from the StripThis! comic creation system converse about bananas, rooms, and each other, while unknowingly computing over infinite sets of numbers. Programs are intended to be rendered as comic strips using the StripThis! engine.
Overview
A Kitchen program consists of a sequence of statements, each spoken by a named character. Characters are drawn from the fixed cast of the StripThis! sandbox, and each character may speak exactly once.
Each statement defines a named constant — either a seed value, a function, or a set derived from previously defined constants. Sets may be infinite, but the program must ensure that the set passed to the print statement is finite, which is guaranteed by intersecting with or creating a bounded set before printing.
The language is total by construction — every valid Kitchen program terminates. There are no loops, no variables, no mutation, and no control flow. A program is simply a sequence of definitions culminating in a single print statement, much like the panels of a comic strip leading to a final punchline.
Syntax
Every line in a Kitchen program takes the form:
Name says "utterance"
Where Name is a character from the valid cast list. There are five valid utterance forms:
Seed
Defines a numeric starting value:
I found <number> bananas in the kitchen
Function
Defines a function in JavaScript arrow syntax:
I wondered about <function>
Create
Generates a sequence from a seed and a function. If a third name is given, the sequence is bounded by that seed value:
<Name> and <Name> were in the bathroom <Name>, <Name> and <Name> were in the bathroom
Combine
Generates a set of values by applying a function to all pairs from two sets:
<Name>, <Name> and <Name> were in the study
Difference
Generates a set of values that are in the first set but not the second:
<Name> and <Name> were in the bedroom
Intersection
Generates a set of values that are in both sets:
<Name> and <Name> were in the lounge
Prints the contents of a set, which must be finite. There must be exactly one print statement in a program:
<Name> was in the dining room
Additional words may be freely inserted into any utterance for narrative flavour, provided they do not interfere with the recognised tokens. Comments begin with // and are ignored.
Example
The following program prints all prime numbers below 100:
"Primes" //print the prime numbers below 100 a new panel Jack says "I found 2 bananas in the kitchen" Stephen says "I wondered about x => x + 1" Otto says "I found 100 bananas in the kitchen" Susan says "I wondered about (x, y) => x * y" a new panel Alan says "Jack, Stephen and Otto were in the bathroom" Dan says "Alan, Alan and Susan were in the study" Lara says "Alan and Dan were in the bedroom" Rico says "Lara was in the dining room"

Jack defines the starting value 2, Stephen defines the successor function, and Otto defines the upper bound of 100. Susan defines multiplication. Alan creates the natural numbers from 2 to 100. Dan combines Alan with himself through Susan to produce all composite numbers up to 100. Lara takes the difference, leaving only the primes. Rico prints the result.
Output:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
Cast
The following names are the only valid character names in Kitchen. They are drawn from the fixed cast of the StripThis! comic creation system.
Women
Ada, Anna, Bianca, Lara, Lucy, Romina, Rummy, Sammy, Sarah, Scarlet, Sheila, Susan, Woman
Men
Alan, Alex, Andreas, Bald, Bert, Carl, Dan, Danny, Dewey, Duke, Frank, Gary, Jack, Jefferson, Jim, KesieV, Lian, Man, Mike, Minique, Nathan, Otto, Peter, Randy, Rico, Robert, Rudy, Samuel, Stephen, Stewey, Tony, Wish
Special
Narrator
Any name not on this list is a syntax error. Each name may appear as a speaker exactly once per program. A name may be referenced in another character's utterance only after that character has already spoken.
Computational Class
Kitchen is non-Turing-complete by design. Programs are strictly limited to the following computational properties:
- All programs are total — every valid Kitchen program terminates.
- There are no loops, branches, or recursive definitions.
- The number of constants in a program is bounded by the size of the cast (46 characters).
- All sets are finite at the point of printing, guaranteed by the bounds propagation of the evaluator.
Kitchen is capable of expressing computations over infinite sets of numbers in a declarative style, provided the result is finite. The primes example demonstrates that this is sufficient for non-trivial computations.
The expressive power of Kitchen is roughly equivalent to that of a single-pass pipeline of set operations over bounded numeric ranges. It is believed to be strictly weaker than a pushdown automaton, though this has not been formally proven.
Implementation
Kitchen is designed to be implemented as a client-side JavaScript application, using the StripThis! comic creation engine for rendering. In the intended implementation:
- The programmer writes a Kitchen program as plain text.
- The program is rendered live as a StripThis! comic strip, with each statement appearing as a panel featuring the speaking character.
- Below the source comic, the output of the program appears as text.
This rendering means that the source code is a comic, and the act of programming is inseparable from the act of comic creation.
An online implementation is available at andrewbayly.com. The StripThis! engine and its full cast of characters can be downloaded from kesiev.com. The sandbox cast, which provides the valid character names for Kitchen, is defined in stencils-sandbox.js.
See Also
- StripThis! — the comic creation engine Kitchen is based on
- Mornington Crescent — an esolang with a fixed inherited map as the basis for computation
- Chef — an esolang in which programs are written as cooking recipes, sharing Kitchen's domestic setting
- Shakespeare — an esolang in which programs are written as theatrical narratives