From Esolang
Jump to navigation Jump to search

Immi is a concept (possibly joke) esoteric programming language started by User:Star651 on December 10, 2011. "Immi" is named for Imogen Heap, a British pop star. The stated goal of the language is to teach people programming while having a little fun. Below is a list of all the commands. In a subsection, there is a list of the origins of the command names.


The following commands are available in Immi:

whatcha say

Output text in a JavaScript document.write fashion. An example:

whatcha say "Hello, world!"

if I could turn back time

The way to say "if (last variable used) = true." An example program containing it would be:

what did x say? 7
if I could turn back time
oh me! "X is supposed to be zero! Gosh darn it!"

what did (variable name) say?

Declare a variable. Example, to set variable h to "Hello, world!":

what did h say? "Hello, world!"

oh me!

Pop up a dialog box, similar to the alert dialog boxes in JavaScript. Example:

what did unheap say? false
if I could turn back time
oh me! "You are now quitting the Immi script. As soon as you click OK, you will be looking at your desktop icons."


The what command can be used in several ways. All the ways it can be used involve loops. To loop something five times, you might do this:

what did w say? 0
whatcha say w+1+"\n"
did she say

This code declares variable w as zero, starts a loop that loops five times (as declared by the five "what"s). It results in a list (provided by the whatcha say command), which writes down the variable plus one. Since w was already zero, the first number would be one, and it writes one through five as numbers in list format, with new-line characters provided by the backslash-n command. But what if you want to do a longer loop, with 100 increments? Instead of writing out all the "what"s, you can do something like this:

what oh my loop! 100

The did she say command at the end of the last full-length program is the equivalent of a right curly brace in JavaScript; it closes the loop.

If (variable) can turn back time

In Immi, variables have to be lowercase, so you can't mess up the "if I could turn back time" command: I is a default keyword that means "last variable used", similar to the way the word this is used in JavaScript objects. So:

if h could turn back time

means: "if h = true:."

hide and seek

This tells the Immi interpreter to delete (or "hide") the variable after it. Let's say you no longer needed variable h, you could write:

hide and seek h

mini immi!

Terminates the program. It is typed by itself on its own line, similar to exit in the Windows/MS-DOS command line language.

Origin of command names

When reading this page, you will realize that some of the commands have obscure names. This page defines them.

  • whatcha say: There is a Jason Derulo song (sampling Imogen Heap) called "Whatcha Say." Basically, this command is asking the prompt what it said. The answer to "Whatcha say?" is in the quotes.
  • if I could turn back time: This Cher-inspired command is here for the sake of pop culture reference. The command has evolved into its derivative "if (variable) could turn back time."
  • what*x: In the Jason Derulo "Whatcha Say" song, the Imogen Heap sample is looped, so it sounds like "whatwhatwhatwhatwhat did she say?" The phrase "oh my loop" comes from Star651's personal experience with sound loops. The "did she say" for closing a loop is a reference to the Derulo song, on how after the "whatwhatwhatwhatwhat" loop, there's a "did she say?"
  • what did (variable say?) is obviously another "Whatcha Say" Derulo reference.
  • oh me! Oh, me is something that Imogen Heap says in her song "Half Life." It's basically like saying, "Oh me! Oh my! There's a warning! Display it in a big dialog box!"
  • hide and seek: This is the name of the Imogen Heap song that Derulo sampled. It is erasing the variable from memory; telling it to "go play hide and seek."
  • mini immi: A slang term for an Imogen Heap fan, used by some Imogen Heap fans to mean, "Oh me!" Usually a remark of disbelief. As in, "Mini immi! This program is over?"

Computational class

Immi can output arbitrary JavaScript in such a way that it will be executed, but this cannot really be considered to be the language performing computations instead. Apart from that, the language is reasonably obviously primitive recursive (assuming that variables can hold unbounded integers), because all loops need their number of iterations declared in advance.