Caca
"Caca" is an esolang created by User:Mari on May 22nd, 2024. It's first (and currently only) Interpeter is written in scratch. It's namesake and commands are based on a Discord server called "Progresscord"'s Humor, of saying "I caca", and sometimes using a sticker which is an edited version of Icoeye's logo with eyebrows, 1 eyebrow raised, a weird smirk and the caption "I caca" in the top corner in impact font. It is described as being "crappy and likely unfunny"
Commands
- icaca - print ascii character (from caca number) to screen
- icacac - add 1 to caca number
- cacacaX - loop line succeeding for value specified
- icac - remove 1 from caca number
- icacan - square caca number
- youcaca - ask user for input, numbers only (input is added to caca number)
- cacatoX - goto a specific line number
- nocaca - switch to previous caca number in caca stack
- yescaca - switch to next caca number in caca stack
- newcaca - add caca number to stack (there is 1 by default)
- icaca? - execute line succeeding if caca number is positive
- nocaca? - execute line succeeding if caca number is negitive
- zecaca? - execute line succeeding if caca number is 0
- cacacaca - clone current caca number to stack
Examples
this is a hello world program written in Caca:
cacaca72 icacac icaca cacaca3 icac icaca cacaca7 icacac icaca icaca cacaca3 icacac icaca cacaca47 icac icaca cacaca55 icacac icaca cacaca8 icac icaca cacaca3 icacac icaca cacaca6 icac icaca cacaca8 icac icaca
This code is mostly illegible, but basically it uses cacaca#### to run an increment(icacac)/decrement(icac) on loop, and it then uses icaca to print the ascii character corresponding with the value.
this is a truth machine:
youcaca newcaca zecaca? cacato12 nocaca? cacato12 yescaca cacaca49 icacac icaca cacato10 yescaca cacaca48 icacac icaca
as Caca code is, its mostly illegible. basically, it uses youcaca to ask for user input (Caca can only handle numbers as input), then, if the number is a 0 or a negative, it goes to the end using a cacato statement, which then outputs one 0 then stops, but if its positive, it then goes on to printing 1, then goes back and prints 1 using a cacato statement
Trivia
- Caca is (at least) the 2nd Esolang inspired by Progresscord, with the first being guh, however, Caca is implemented, at least in Scratch, while guh remains unimplemented. Also, Caca might be turing complete, while Guh is not due to lack of Conditional Execution.
- Originally, the command called 'zecaca?' was called 'nucaca?', but however scratch's bad word detector detected nucaca as a bad word so I had it changed to 'zecaca?'
- It is one of many languages to feature a Nope. Interpreter.
- Upgrades to Caca such as String Caca (Caca with strings), Absolute Caca (Caca with absolute number support, rather than all relivate), and Caca Pro (Caca with improved control flow)