I’ve never worked with Haskell, but I’ve been meaning to expand my programming repertoire (particularly since I don’t get to do much coding at work, let alone learn new languages) and this makes for a nice opportunity, so I wanna try to parse this / guess at the syntax.
I assume iterate function arg applies some function to arg repeatedly, presumably until some exit condition is met? Or does it simply create an infinite, lazily evaluated sequence?
( ) would be an inline function definition then, in this case returning the result of applying ++suffix to its argument (which other languages might phrase something like arg += suffix), thereby appending " Is Not an Emulator" to the function argument, which is initially “WINE”.
So as a result, the code would produce an infinite recurring “WINE Is Not an Emulator Is Not an Emulator…” string. If evaluated eagerly, it would result in an OOM error (with tail recursion) or a stack overflow (without). If evaluated lazily, it would produce a lazy string, evaluated only as far as it is queried (by some equivalent of a head function reading the first X characters from it).
My personal favorite acronym like that definitely goes to AROS (Amiga Research Operating System) that if I remember correctly had to - for legal reasons - change the name. Rather than come up with a completely new name, went with AROS Research Operating System.
Edit: name change was apparently to avoid any trademark issues with the Amiga name.
It’s a cheeky play on “WINdows Emulator” as well as “WINE’s Is Not an Emulator”, but I think for both legal (trademark) and logistical (it really isn’t an emulator) reasons, you’ll never officially see that bit sanctioned
My favorite software acronym is PINCE, the reverse engineering tool that’s similar to Cheat Engine in Winblols, that stands for PINCE Is Not Cheat Engine.