
While some argue that BDSM in esolangs goes all the way back to INTERCAL, the language Fetlang puts kink front and center. Let’s take a look at a more-or-less random excerpt from this braintuck-to-C transpiler:
Bind Thomas to Saint Andrew’s Cross
have him hogtie CharlieIf Thomas is Zoro’s bitch
if Carrie is Zoro’s bitch
make Earl moan Charlie’s name
if Carrie is Olivia’s bitch
make Faith moan Charlie’s name
lick Carrie’s toes
make Charlie moan
Each of these are of course encodings of rather banal computer operations, making Fetlang both vocabulary-driven (through its up-front obfuscation) and unabashedly a "theme" language, dressing up the text of code in noncode guise. Fetlang is not simple, however, with hundreds of commits over months, a nontrivial grammar (it took an implementation of Rule 110 to prove it Turing Complete), and surprisingly good documentation. Its creator, Dagan Martinez, says:
Fetlang is, embarrassingly, probably the largest project I’ve worked on. So, with all that effort, I wanted to at least make it decent: documentation, unit testing, etc.
Fetlang, like TerrariaCode, which we looked at recently, are both by students who began their projects in Python and switched to C++ (making us ask: why is programming taught this way??), although Fetlang did much better in the transition. The original, called Orgy, was discarded but shows the early thinking around the project, and how much more ambitious the final version was, a far more complete conceptual immersion.
While diversity in code is a critical issue, this is one of my all-time favorite GitHub Issues:
The following is offensive IMO on account of the choice of occidental first names.
lick Ada’s feet forty three times
lick Sasha’s left nipple forty five times
…
lick Orange’s nose forty six times
lick Inky’s forehead forty four timesSuggestions:
lick Ahmed’s balls sixty times or
lick Meera’s left nipple forty five times
FWIW, there’s nothing in Fetlang that forces you to draw from a small group of names, but I am all for adding Ahmed to the ball-licking mix.
Much less racy (but continuing the oral fixation of this language) is this excerpt from the Rule 110 implementation, which contains a systematic and precise licking of numbers in roughly numerical order:
…
lick number36
lick number36
lick number36
lick number36
lick number36
lick number36
lick number37
lick number37
lick number37
lick number37
lick number37
lick number37
lick number37
lick number37
lick number37
lick number37
lick number37
lick number37
…
If this wasn’t enough, Fetlang is extensible. From the readme: “just install your fetish in share/fetlang/fetishes.”
