Compaline

Compaline is an esoteric programming language, invented on 19 October 2023, by Ice Bird. Its name is a portmanteau of "comparison" and "timeline", which a reference to several removed YouTube videos made by JG Science. The commands are references to the comparison and timeline videos and their removal.
==Tutorial==
===Modules===
Compaline has several built-in modules for various purposes. To use a module, you need to add "Watch <module name>" for each module.
Module list:
- information, used for any sort of interaction or communication with users.
 information.upload(<message>) - Sends the message in between the parantheses.
 information.recover.title(<variable>) - Receives text input in between and assigns it to the variable in between the parantheses.
 information.recover.thumbnail - Receives keyboard input.
 information.recover.play - Receives mouse input.
- probability, used for returning random numbers or items. (similar to random module in python)
 probability.integer(<x>, <y>) - Returns a random integer between x and y inclusive.
 probability.real(<x>, <y>) - Returns a random real number between x and y inclusive.
 probability.item(<list>) - Returns a random item from a list.
- number, used for advanced mathematical operations and functions.
 number.high(<list>) - Returns the variable with the greatest value from a list. List can be either a variable or an array of items separated by commas.
 number.low(<list>) - Returns the variable with the lowest value from a list. List can be either a variable or an array of items separated by commas.
 number.sin(<number>) - Returns the sine of a number of radians. For degrees, use number.sin.deg.
 number.cos(<number>) - Returns the cosine of a number of radians. For degrees, use number.cos.deg.
 number.tan(<number>) - Returns the tangent of a number of radians. For degrees, use number.tan.deg.
 number.cot(<number> - Returns the cotangent of a number of radians. For degrees, use number.cot.deg.
 number.factorial(<number>) - Returns the factorial of a number.
 number.sum(<list>) - Returns the sum of all items in a list. List can be either a variable or an array of items separated by commas.
 number.product(<list>) - Returns the product of all items a list. List can be either a variable or an array of items separated by commas.
 number.lcm(<list>) - Returns the least common multiple of all items in a list. List can be either a variable or an array of items separated by commas.
 number.gcd(<list>) - Returns the greatest common divisor of all items in a list. List can be either a variable or an array of items separated by commas.
 number.approx(<number>) - Returns the number rounded to the nearest integer.
 number.before(<number>) - Returns the first integer less than or equal to the number.
 number.after(<number>) - Returns the first integer greater than or equal to the number.
 number.positive(<number>) - Returns the absolute value of the number.
 number.sqrt(<number>) - Returns the square root of the number.
 number.cbrt(<number>) - Returns the cube root of the number.
 number.power(<list>) - Returns the exponentiation of all items in a list, i.e. x^y^...^lastnumber. Usually only used with 2 numbers. List can be either a variable or an array of items separated by commas.
- time, used for time detection and management.
 time.elapse(<seconds>) - The code stops running for <seconds> seconds.
==Example==
To play Rock Paper Scissors:
 
 Watch probability
 Watch information
 probability.integer(0, 2)
 if 0 is recovered: archive rock
 if 1 is recovered: archive paper
 if 2 is recovered: archive scissors
 comparison_1(download archive)
 information.upload(Choose rock, paper, or scissors.), comparison convert to information.recover.title
 archive comparison
 comparison_2(download archive)
 if information.recover.thumbnail == Q: terminate
 if nostalgia(comparison_1, comparison_2) identical: information.upload(It's a draw!)
 if (comparison_2 == paper and comparison_1 == rock) or (comparison_2 == scissors and comparison_1 == paper) or (comparison_2 == rock and comparison_1 == scissors): information.upload(You won!)
 lost: information.upload(You lost!)