WLWLWL
WLWLWL, We Live, We Love, We Lie, WeLiveWeLoveWeLie or 2 (a reference to the programming language's number system) is an esoteric programming language inspired by the Smurf Cat meme and SquidScript. It was created by User:LEOMOK. The instructions are lyrics fron Alan Walker's "The Spectre" and CG5's "Live Love Lie".
Syntax and instructions
WLWLWL uses variables and lists to store data. Variables in WLWLWL store 64-bit floats.
All WLWLWL programs should start with this line:
OnceUponATime
Literals and operators
Number literals in WLWLWL are written in binary, with WeLive as 1, WeLove as 0 and WeLie to end the literal. Use And for the bicimal point.
For example, 2.5 is:
WeLiveWeLoveAndWeLiveWeLie
There are also these predefined constants:
TheOtherSide Infinity, 1/0 ThePathUnknown NaN, 0/0 MyHead Pi, 3.14159... ThisRoadTooLong Euler's number, 2.71828...
Variable and list names match the regular expression [A-Z][A-Za-z]* and cannot be a word in any instruction, or look like a literal, a predefined constant or an operator. Referencing a list name in a variable/value context returns its length.
To index a list, write (for example) List like Index. List of Value returns the first occurence of said value in said list, -1 if nonexistent. List indices start from 0.
Comments are written in square brackets.
And here are the operators (a and b are variable or list indices):
RareAs(a, b) returns a+b BlueAs(a, b) returns a-b Mushrooms(a, b) returns a*b UpTil(a, b) returns a/b NinthLife(a, b) returns a%b with the sign of a DeepestRiver(a, b) returns a**b. 0 to the power of 0 is 1. OldAs(a, b) returns log base b of a Time(a) returns -a BerryRipe(a) returns floor(a) Fairy(a) returns ceiling(a) HisKingdom(a) returns abs(a) TheDark(a, WeLiveWeLie) returns sin(a). All trig functions work in radians. TheDark(a, WeLiveWeLoveWeLie) returns cos(a) TheDark(a, WeLiveWeLiveWeLie) returns tan(a) TheLight(a, WeLiveWeLie) returns asin(a) TheLight(a, WeLiveWeLoveWeLie) returns acos(a) TheLight(a, WeLiveWeLiveWeLie) returns atan(a)
There are also these comparison and logical operators:
HeLived(a, b) returns 1 if a<b, else 0. HeLoved(a, b) returns 1 if a>b, else 0. HeLied(a, b) returns 1 if a==b, else 0. NaN == NaN in WLWLWL. AllWrong(a) logical not. Returns 1 if a is 0 or NaN, else 0. AllRight(a, b) logical and. 0 and NaN are the only falsy values, the rest are truthy. TooLong(a, b) logical or.
Instructions
Variables and lists
Hello a creates variable a and sets it to NaN HelloHello a creates empty list a TheresA a Inside b sets variable/list index b to a. If a is a list, truncates/extends a to b items, adding NaNs if extending. LetThe a TakeYouOnA b adds value b to list a. GazingOutOn a, b concatenates lists a and b to store back into a Seeing a Onthe b, c replaces subsegments of list a in list b with list c, acts in-place WalkinDownThis a, b, c finds subsegment of list a from indices b to c, then stores back into a SingItOutLike a, b, c removes items b to c in list a, acts in-place YeahThe a Were b convert a into a string with its decimal representation, then place the string's ascii values into list b AndThe a AreAlwaysInA b convert list b (as a Unicode string) into a decimal number, then store into a. NaN if invalid number. Before a FadeAway empty list a. WereTheWordsOf a fast list initialiser command. For details, see WLWLWL#Fast_list_initialisation. InThis a So b fill list a with the value of b.
Control flow
IsThatAPlace a start of if statement, a is the condition. WalkAlong a start of while loop, a is the condition. WhenEverythingIsAllWrong else in if statements. EverythingWillBeAllRight end of if statement or while loop. IBelieveYou breaks out of a loop, or ends the program if not in a loop HowCanIForget loop continue.
Input and output
CanYouHear a inputs a line, converts it into a number and puts it in a. NaN at EOF. NiceToMeet a inputs a character and puts its Unicode value in a. -1 at EOF. ItAllBelongsTo a inputs a string (until the first newline) and stores its Unicode values into the list a. Empties the list at EOF. VoiceInside a prints a as a decimal number. AsIScream a prints floor(a) as a Unicode character. Error if there is no such character. ToFind a print the list a (with all arguments floored) as a Unicode string. Error if any item has no Unicode character. DeepIn a open text file a (list, file name) for input. Until the file is closed or another file is opened, all input comes from that file. WeDontNeedThe a open text file a (list, file name) for output. Until the file is closed or another file is opened, all output goes to that file. Шайлушай close any open text files.
Function declaration
To declare a function definition, start with this line:
When FunctionName LivedForever ArgOne, ArgTwo, ArgThree...
The return value of the function will be stored in the variable Tale (which need not be initialised). If it is not assigned at all, the function will return NaN.
After defining your function, simply call it like this:
FunctionName(ArgOne, ArgTwo, ArgThree)...
Functions can be used in expressions.
Fast list initialisation
There is a faster way to print and store strings in WLWLWL with the WereTheWordsOf instruction. Simply write the string in single '' or double "" quotes, then the next line should be WereTheWordsOf followed by a list name, which will set the list to the Unicode values of the string.
An example:
"We live, we love, we lie" WereTheWordsOf TheLittleFeline
Valid escape codes are \\ for a backslash, \" for a double quote, \' for a single quote, \n for a newline and \(WeLiveWeLoveWeLie) for an arbitrary character, in this case U+0002 (expression interpolation between the parentheses).
Turing-Completeness proof
WLWLWL is Turing-complete, as it can interpret Brainf***:
OnceUponATime
HelloHello Tape
TheresA WeLiveWeLiveWeLiveWeLoveWeLiveWeLoveWeLiveWeLoveWeLoveWeLiveWeLiveWeLoveWeLoveWeLoveWeLoveWeLie Inside Tape [Initialise 30000 cells...]
InThis Tape So WeLoveWeLie [...which start at 0]
HelloHello Input
ItAllBelongsTo Input [input string]
Hello Index
TheresA WeLove Inside Index
Hello Pointer
TheresA WeLove Inside Pointer [set up pointer and loop]
Hello Teleport
Hello Nestings
WalkAlong HeLived(Index, Input)
IsThatAPlace HeLied(Input like Index, WeLiveWeLiveWeLiveWeLiveWeLiveWeLoveWeLie) [<]
TheresA BlueAs(Pointer, WeLiveWeLie) Inside Pointer
EverythingWillBeAllRight
IsThatAPlace HeLied(Input like Index, WeLiveWeLiveWeLiveWeLiveWeLiveWeLoveWeLie) [>]
TheresA RareAs(Pointer, WeLiveWeLie) Inside Pointer
EverythingWillBeAllRight
IsThatAPlace HeLied(Input like Index, WeLiveWeLoveWeLiveWeLoveWeLiveWeLiveWeLie) [+]
TheresA RareAs(Tape like Pointer, WeLiveWeLie) Inside Tape like Pointer
EverythingWillBeAllRight
IsThatAPlace HeLied(Input like Index, WeLiveWeLoveWeLiveWeLiveWeLoveWeLiveWeLie) [-]
TheresA BlueAs(Tape like Pointer, WeLiveWeLie) Inside Tape like Pointer
EverythingWillBeAllRight
IsThatAPlace HeLied(Input like Index, WeLiveWeLoveWeLiveWeLiveWeLiveWeLoveWeLie) [.]
AsIScream Tape like Pointer
EverythingWillBeAllRight
IsThatAPlace HeLied(Input like Index, WeLiveWeLoveWeLiveWeLiveWeLoveWeLoveWeLie) [,]
NiceToMeet Tape like Pointer
IsThatAPlace HeLied(Input like Index, WeLiveWeLoveWeLiveWeLiveWeLoveWeLiveWeLiveWeLie) [start loop]
IsThatAPlace HeLied(Tape like Pointer, WeLoveWeLie)
TheresA Index Inside Teleport
TheresA WeLove Inside Nestings
WalkAlong HeLived(Input like Teleport, Input)
IsThatAPlace HeLied(Input like Index, WeLiveWeLoveWeLiveWeLiveWeLoveWeLiveWeLiveWeLie)
TheresA RareAs(Nestings, WeLiveWeLie) Inside Nestings
EverythingWillBeAllRight
IsThatAPlace HeLied(Input like Index, WeLiveWeLoveWeLiveWeLiveWeLiveWeLoveWeLiveWeLie)
TheresA BlueAs(Nestings, WeLive) Inside Nestings
EverythingWillBeAllRight
IsThatAPlace HeLied(Nestings, Time(WeLiveWeLie))
TheresA Teleport Inside Index
EverythingWillBeAllRight
TheresA RareAs(Teleport, WeLiveWeLie) Inside Teleport
EverythingWillBeAllRight
IsThatAPlace HeLied(Input like Index, WeLiveWeLoveWeLiveWeLiveWeLiveWeLoveWeLiveWeLie) [end loop]
IsThatAPlace HeLied(Tape like Pointer, WeLoveWeLie)
TheresA Index Inside Teleport
TheresA WeLove Inside Nestings
WalkAlong TooLong(HeLoved(Input like Teleport, Input), HeLied(Input like Teleport, Input))
IsThatAPlace HeLied(Input like Index, WeLiveWeLoveWeLiveWeLiveWeLiveWeLoveWeLiveWeLie)
TheresA RareAs(Nestings, WeLiveWeLie) Inside Nestings
EverythingWillBeAllRight
IsThatAPlace HeLied(Input like Index, WeLiveWeLoveWeLiveWeLiveWeLoveWeLiveWeLiveWeLie)
TheresA BlueAs(Nestings, WeLive) Inside Nestings
EverythingWillBeAllRight
IsThatAPlace HeLied(Nestings, Time(WeLiveWeLie))
TheresA Teleport Inside Index
EverythingWillBeAllRight
TheresA BlueAs(Teleport, WeLiveWeLie) Inside Teleport
EverythingWillBeAllRight
TheresA RareAs(Index, WeLiveWeLie) Inside Index
EverythingWillBeAllRight
Examples
OnceUponATime "Hello World!" WereTheWordsOf OutputString ToFind OutputString
FizzBuzz to input value:
OnceUponATime
Hello EndLoop
CanYouHear EndLoop
TheresA WeLoveWeLie Inside Number
"Fizz"
WereTheWordsOf Fizz
"Buzz"
WereTheWordsOf Buzz
"FizzBuzz"
WereTheWordsOf FizzBuzz
WalkAlong HeLived(Number, EndLoop)
TheresA RareAs(Number, WeLiveWeLie) Inside Number
IsThatAPlace HeLied(NinthLife(Number, WeLiveWeLiveWeLiveWeLiveWeLie), WeLove)
ToFind FizzBuzz
HowCanIForget
EverythingWillBeAllRight
IsThatAPlace HeLied(NinthLife(Number, WeLiveWeLiveWeLie), WeLove)
ToFind Fizz
HowCanIForget
EverythingWillBeAllRight
IsThatAPlace HeLied(NinthLife(Number, WeLiveWeLoveWeLiveWeLie), WeLove)
ToFind Buzz
HowCanIForget
EverythingWillBeAllRight
VoiceInside Number
EverythingWillBeAllRight
Sieve of Eratosthenes to input value:
OnceUponATime
Hello EndLoop
CanYouHear EndLoop
HelloHello IsPrime
TheresA EndLoop Inside IsPrime
InThis IsPrime So WeLiveWeLie [create list of 100 ones]
TheresA WeLoveWeLie Inside IsPrime like WeLoveWeLie
TheresA WeLoveWeLie Inside IsPrime Like WeLiveWeLie [remove indices 0 and 1]
Hello Factor
TheresA WeLiveWeLoveWeLie Inside Factor
Hello Multiple
WalkAlong AllWrong(HeLoved(Factor, DeepestRiver(EndLoop, WeLoveAndWeLiveWeLie)))
IsThatAPlace IsPrime like Factor
TheresA WeLiveWeLoveWeLie Inside Multiple
WalkAlong HeLived(Mushrooms(Multiple, Factor), EndLoop)
TheresA WeLove Inside IsPrime like Mushrooms(Multiple, Factor)
TheresA RareAs(Multiple, WeLiveWeLie) Inside Multiple
EverythingWillBeAllRight
EverythingWillBeAllRight
TheresA RareAs(Factor, WeLiveWeLie) Inside Factor
EverythingWillBeAllRight
Hello PrintIndex
HelloHello Newline
"\n"
WereTheWordsOf Newline
TheresA WeLiveWeLoveWeLie Inside PrintIndex
WalkAlong HeLived(PrintIndex, EndLoop)
IsThatAPlace IsPrime like PrintIndex
VoiceInside PrintIndex
ToFind Newline
EverythingWillBeAllRight
TheresA RareAs(PrintIndex, WeLiveWeLie) Inside PrintIndex
EverythingWillBeAllRight