Caca

From Esolang
Jump to navigation Jump to search

"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"

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.
HD Remake of Sticker in Question

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)

Implementations