Lythnology

From Esolang
Jump to navigation Jump to search
Lythnology
Designed by user:RainbowDash
Appeared in 2025
Computational class Turing complete
Reference implementation Unimplemented
Influenced by Baba Is You
File extension(s) .lyth
Text surronding the word "Lythnology" the text surronding it, is each of the predefined words from Lythnology
Lythnology's logo

Lythnology is a programming language in which you define your own words, as the programmer you are given a list of already defined words, along with their affordances. All words are uppercased, and there are no other symbols besides spacing (such as tabs) and newlines.

An Introduction

Lythnology is based on creating words a word is simply just a single word, like "DOG". Some of these words can affect other words or the program's flow, this is what is meant by "Affordances". Each word also has "Values" which are looked at when you are printing, or inside of an if statement. To make a comment simply put # and all text infront of it will be ignored.

Words

The Pre-Existing Dictionary

You can create words or pick from the list of already defined words which includes
IF|IS|THEN|TO|TRANSFORMS|WHEN|SAY|INPUT|AND|WITH|OR|NOT
Each word has it's "Affordances" and it's "Values".
To create a word, simply put it into the program, and it will be added to part of the dictionary for example if you say "DOG" it will have no affordances because it doesn't do anything yet, and it has the value of "DOG".

Creating Words

To create a word, you can simply put it into the program.
For example if put the word "DOG" into the program it will be given zero affordances, meaning it can't affect anything. but it will have the value "DOG" so for example if have the program.

SAY DOG

it will print "DOG" to the console because the word DOG has a value of "DOG" but if you do this instead.

DOG IS BLUE
SAY DOG

the word DOG now has the value of "BLUE" so it will instead print "BLUE"

You can also define words to pre existing words like

PRINT IS SAY
PRINT DOG

The word PRINT has the affordances that the word SAY has, so it will be able to say the word infront of it.

Variables

To create a variable you can change the value of a word, to do this you have the words IS, OR , WITH & AND
OR randomly picks from a list of other words, IS simply sets a value of another word

Examples:

DOG IS CAT

This creates the word DOG and sets its value to "CAT". if the word CAT already exists, it will copy all of it's properties into DOG, while the word CAT remains the same.

RANDOM IS ONE OR TWO OR THREE OR FOUR

This simply picks a random word for the value RANDOM to be set to, again if the word it picks already exists, the properties will be copied to the word RANDOM.

RANGE IS ONE AND TWO AND THREE AND FOUR AND FIVE

This introduces the fact that a singular word can have multiple different values. Using AND will inherit all of the properties of each word. When you print RANGE it will say "ONE TWO THREE FOUR FIVE".

THAT IS ACQ WITH UIT WITH TED

The word THAT will now have the value of "ACQUITTED" it simply concats the value of each word, unlike AND, the word being assigned does not inherit the affordances of each word.

Conditionals & Jumping

IF Statements

An IF statement normally consists of this structure IF ... IS ... THEN where if the statement is false, it jumps to the word THEN. Here is an example to show it in action.

NUMBER IS ONE
IF NUMBER IS ONE
   NUMBER IS NUMBER # Reassigns NUMBER to the value "NUMBER" so you can print the word number.
   SAY NUMBER
   SAY IS
   SAY ONE
THEN

This program above, creates the word NUMBER with the value of "ONE" and then the program prints that the NUMBER is one.

Multiple Values

If a word has multiple values, it will flag true for all of them

RANGE IS ONE AND TWO AND THREE AND FOUR
IF RANGE IS ONE
  PRINT YES # This will print yes because the word ONE is one of the values of RANGE
THEN
IF RANGE IS FIVE
  PRINT YES # This will not print because the word FIVE is not one of the values of RANGE
THEN

NOT

Not works like how you would expect not to

CAT IS DOG
IF CAT IS NOT DOG 
  PRINT YES # This will not print because cat has a value of DOG
THEN

Backwards Jump

Jumping backward is simple you use the word WHEN, this will jump back to the most recent time a word was used.

WAS
PRINT HELLO
WHEN WAS

This program will print hello forever.

IO

Printing

If you have read everything before, you should have a good idea about how printing words, however I'll go over it again, clearly. To print use the word SAY, this will say the value of the word infront of it.
Printing will print one word to the console at a time each with a space between, no newlines.

CAT IS DOG # This defines the word CAT to have a value of DOG
SAY CAT # Prints dog

If you do not like the word "SAY" to print you can change it like so

PRINT IS SAY # the word PRINT gets the affordances of SAY
PRINT DOG # Prints dog

Input

Input is in the form of singular words, if the user inputs multiple words only the first word will be retrieved and then uppercased. To showcase this, here is a simple one time cat.

USER IS INPUT # Gets input from the user, and stores it in the value of the word USER
SAY USER # Prints back whatever the user says.

Transforming

Transforming is powerful, this is what allows you to define stuff such as mathematical functional words for example

INCREMENT TRANSFORMS ONE TO TWO TO THREE TO FOUR TO FIVE TO SIX TO SEVEN TO EIGHT TO NINE TO ZERO
THIS IS ONE
INCREMENT THIS
SAY THIS # Prints two

The word INCREMENT will be given the Affordance of being able to transform other words, so the word THIS will now have a value of TWO when printed. You can also define multivariable transforms like so

INPUTONE IS A
INPUTTWO IS B
COMBINED IS A WITH B
AND TRANSFORMS AA TO A AB TO B BA TO B BB TO B 

This emulates an and gate.

Example Programs

Ten bottles of beer on the wall

It is ten bottles just for simplicity.

DECREMENT TRANSFORMS TEN TO NINE TO EIGHT TO SEVEN TO SIX TO FIVE TO FOUR TO THREE TO TWO TO ONE

COUNT IS TEN

WAS
   SAY COUNT
   SAY BOTTLES
   SAY OF 
   SAY BEER
   SAY ON
   SAY THE
   SAY WALL
   SAY TAKE SAY ONE SAY DOWN SAY PASS SAY IT SAY AROUND
DECREMENT COUNT

IF COUNT IS NOT ONE
 WHEN WAS # Jumps back to the word WAS
THEN

SAY NO SAY MORE SAY BOTTLES SAY OF SAY BEER SAY ON SAY THE SAY WALL

Truth Machine

SAID IS INPUT
IF SAID IS 0
    SAY 0
THEN
IF SAID IS 1
        WAS
        SAY 1
    WHEN WAS
THEN

Rock Paper Scissors

ROBOT IS ROCK OR SCISSORS OR PAPER
PLAYER IS INPUT

RESULT TRANSFORMS
ROCKPAPER TO ROBOT  
PAPERROCK TO PLAYER  
ROCKROCK  TO TIE  
PAPERPAPER TO TIE  
SCISSORSCISSORS TO TIE  
ROCKSCISSORS TO PLAYER  
SCISSORSROCK TO ROBOT  
PAPERSCISSORS TO ROBOT  
SCISSORSPAPER TO PLAYER  

TOTAL IS PLAYER WITH ROBOT
RESULT TOTAL
SAY TOTAL

Infinite Cat

WAS
USER IS INPUT
SAY USER
WHEN WAS