Examine individual changes

Abuse Filter navigation (Home | Recent filter changes | Examine past edits | Abuse log)
Jump to navigation Jump to search

This page allows you to examine the variables generated by the Abuse Filter for an individual change.

Variables generated for this change

VariableValue
Edit count of the user (user_editcount)
1
Name of the user account (user_name)
'Undalevein'
Age of the user account (user_age)
8908136
Page ID (page_id)
0
Page namespace (page_namespace)
0
Page title (without namespace) (page_title)
'Timeline'
Full page title (page_prefixedtitle)
'Timeline'
Action (action)
'edit'
Edit summary/reason (summary)
'Added Timeline language, still working on it but I only saving progress'
Old content model (old_content_model)
''
New content model (new_content_model)
'wikitext'
Old page wikitext, before the edit (old_wikitext)
''
New page wikitext, after the edit (new_wikitext)
'{{infobox proglang |name=Timeline |paradigms=imperative |author=[[User:Undalevein|Undalevein]] |year=[[:Category:2025|2025]] |memsys=variables |dimensions=two-dimensional |majorimpl=[https://github.com/Undalevein/Timeline Official] |influence=[[Befunge]] |files=<code>.timeline</code> }} '''Timeline''' is an [[esoteric programming language]] created by [[Undalevein]] in January 2025. Aimed to be a language that is both difficult to read and difficult to comprehend, the design of Timeline was first conjured as a "3-dimensional programming language in a 2-dimensional projection." Taking some inspiration from [[Befunge]], programmers control a data pointer that points to a section in your code. The data pointer can pick up items from infinity cells in which the accumulator that automatically stores and evaluates data and operators inside it. To get access to different values or operators, you must travel downwards and only downwards to get what you want. ==Language Overview== ===Data Pointer=== Similar to Befunge, Timeline uses the same date pointer rules. The data pointer starts at (0,0) of your code, or the top left corner of the file. It will travel right by default, and it will keep moving right until it gets redirected. The program begins by first performing an action on the character the data pointer is looking for act, then evaluates the accumulator, then move. If a data pointer reaches either end of the row or column and steps out of bounds, it will loop around that same line or column. ===Layers=== The programming language may seem like it's a 2D programming language, but topologically, it is a 3D programming language. Introducing: layers! When a program runs, the data pointer will begin at layer 0. The data pointer can go down the next layer by 1 when it is at the `@` character. This, in effect, will change what the Infinity Cells offer by 1. While this can allow you to get more values and operators, you can never go up, only down! And sure, because each Infinity Cell is looping you can reset all infinity cells not including the STDIN infinity cell; all you need to do is to go down to layer 43680... oh... oh no... Infinity Cells are characters where if the data pointer initiates it, it will receive a value or operator depending on what layer number the data pointer is in. Take the character `D` as an example where it holds digit characters 0 to 9 then repeats. If the data pointer is at layer 0, then it will get `0` into the accumulator and if the data pointer is at layer 1, then it will get `1` and so on and so forth. Until the data pointer is at layer 10 is where the digits the accumulator can get wraps around, where the data pointer will receive `0` again if pointed. Keep this in mind when you have multiple different Infinity Cells in your code! ===Accumulator=== In the program, you are controlling an accumulator. Internally, the accumulator stores 3 items: a left-value, an operator, and then a right-value. The accumulator begins at the left-value, then operator, then right-value. The left-value and right-value are, internally, string type. However, they can behave similarly to other data types like integers, floats, or booleans. So, if you concatenate "1" and "0" to make "10" and then add "10" with "1", then it will be evaluated to "11". The operator can only get operator types and they can be either unary or binary operators. If the left-value or right-value is given an operator type or the operator is given a string type, then the accumulator will become AMORPHOUS. This means that the accumulator, if received any more items, will automatically evaluate to AMORPHOUS. It will remain AMORPHOUS until the accumulator is cleared by the clear cell `?` or this print cell `.`. After evaluating the cell the pointer is on, the accumulator automatically evaluates before moving to the next character. It evaluates under the following conditions: - If there's only the left-value (left-value is not empty), then no evaluation will be made. - If there's a left-value and an unary operator, then an evaluation will be made. - If the left-value is incompatible with the operator (i.e. negating `"HELLO!"`), then the accumulator becomes AMORPHOUS. - If the left-value is compatible with the operator, it will perform the evaluation and save the result to the left-value and then removes the operator from the accumulator. - If there's a left-value and a binary operator but the right-value is empty, then no evaluation will be made. - If there's a left-value, a binary operator, and a right-value, then an evaluation will be made. - If either values are incompatible with the operator (i.e. adding `"M"` to `"9"`), then the accumulator becomes AMORPHOUS. - If both values are compatible with the operator, it will perform the evaluation and save the result to the left-value and then removes the operator and the right-value from the accumulator. ===Types=== ====Numbers==== As mentioned, although everything is a string, they can still be inferred as integer or float types. When evaluating using operators that require integers or float values, it will first evaluate the values as integers (if available) and the evaluate the values as floats. A string is inferred as a integer if all of characters are digit character. A string can still be an integer if the first character is a minus symbol, but it must have digit characters after it. Examples of integers: `154`, `-4231` A string is inferred as a float if all characters are a digit character and exactly one period somewhere in the string. Like the integer, a string can still be a float if the first character is a minus symbol, but it must have digit characters and a dot after it. Examples of floats: `356.0`, `-0.1` ====Booleans and Truthiness==== Booleans are `"TRUE"` and `"FALSE"`. These are results after using a successful relational opereator evaluation. Technically, you can make the word `"FALSE"` and it will be considered as false internally, though I am not sure why you want to do that. In some scenarios when a boolean is required, the interpreter will evaluate things as truthy or falsy. Everything is considered truthy except for the following: - The left-value is `"FALSE"` (all capitalized). - The left-value is a null character `\0` (only obtained through stdin input).````````````````` - The left-value is empty. - The accumulator is AMORPHOUS. - The accumulator contains a binary operator that it can't evaluate yet. However, these below are not considered falsy. - Left-value is `"AMORPHOUS"`, including its lowercase variations, but the accumulator itself is not AMORPHOUS. - Left-value is `"NULL"` or `"EMPTY"`, including their lowercase variations, but the accumulator is not actually empty. - Left-value is `"0"` (or only zero characters). - Left-value is any of the lowercase variations of of `"FALSE"`. ==Command List== Below are the characters that are used in the program. Any other character not listed are considered comment characters. ===Infinity Cells=== Infinity cells are cells that contain all of the necessary values and operators that can perform computation. Additionally, there are characters that changes the direction of your data pointer. If your data pointer is pointing at one at a given moment, it will add that item to your accumulator based on your layer number. {| class="wikitable" |+ Infinity Cell Commands |- ! Character !! Term !! Order |- | <code>A</code> || Booleans || <code>TRUE</code> → <code>FALSE</code> → ... |- | <code>B</code> || Boolean Operators || <code>not</code> → <code>and</code> → <code>or</code> → ... |- | <code>C</code> || Concatenation Operators || <code>concat</code> → <code>repeat</code> → ... |- | <code>D</code> || Digits || <code>0</code> → <code>1</code> → <code>2</code> → ... → <code>8</code> → <code>9</code> → ... |- | <code>E</code> || Relational Operators || <code>==</code> → <code>!=</code> → <code><</code> → <code><=</code> → <code>></code> → <code>=></code> → ... |- | <code>I</code> || Stdin Input || <code>Stdin[0]</code> → <code>Stdin[1]</code> → ... → <code>Stdin[n]</code> → <code>\0</code> → ... |- | <code>L</code> || Lowercase Letters || <code>a</code> → <code>b</code> → <code>c</code> → ... → <code>y</code> → <code>z</code> → ... |- | <code>M</code> || Arithmetic Operators || <code>+</code> → <code>-</code> → <code>*</code> → <code>/</code> → <code>**</code> → <code>%</code> → <code>negation</code> → ... |- | <code>N</code> || Bitwise Operators || <code>~</code> → <code>&</code> → <code><nowiki>|</nowiki></code> → <code><<</code> → <code>>></code> → <code>>>></code> → ... |- | <code>R</code> || Estimation Operators || <code>round</code> → <code>ceil</code> → <code>floor</code> → <code>trunc</code> → ... |- | <code>S</code> || Symbols || <code>`</code> → <code>~</code> → <code>!</code> → <code>@</code> → <code>#</code> → <code>$</code> → <code>%</code> → <code>^</code> → <code>&</code> → <code>*</code> → <code>(</code> → <code>)</code> → <code>-</code> → <code>_</code> → <code>=</code> → <code>+</code> → <code>[</code> → <code>{</code> → <code>]</code> → <code>}</code> → <code>\</code> → <code><nowiki>|</nowiki></code> → <code>;</code> → <code>:</code> → <code>'</code> → <code>"</code> → <code>,</code> → <code><</code> → <code>.</code> → <code>></code> → <code>/</code> → <code>?</code> → ... |- | <code>T</code> || Trigonometry Operators || <code>sin</code> → <code>cos</code> → <code>tan</code> → <code>csc</code> → <code>sec</code> → <code>cot</code> → ... |- | <code>U</code> || Uppercase Letters || <code>A</code> → <code>B</code> → <code>C</code> → ... → <code>Y</code> → <code>Z</code> → ... |- | <code>W</code> || Whitespace || <code> </code> → <code>\n</code> → <code>\t</code> → ... |- | <code>a</code> || Movement 1 (Changes Accumulator Direction) || <code>LEFT</code> → <code>DOWN</code> → <code>RIGHT</code> → <code>UP</code> → ... |- | <code>b</code> || Movement 2 (Changes Accumulator Direction) || <code>DOWN</code> → <code>RIGHT</code> → <code>UP</code> → <code>LEFT</code> → ... |- | <code>c</code> || Movement 3 (Changes Accumulator Direction) || <code>RIGHT</code> → <code>UP</code> → <code>LEFT</code> → <code>DOWN</code> → ... |- | <code>d</code> || Movement 4 (Changes Accumulator Direction) || <code>UP</code> → <code>LEFT</code> → <code>DOWN</code> → <code>RIGHT</code> → ... |} ===Static Cells=== Static Cells do not change when going down layers. Unless explicitly specified in the command's description, they will not clear the accumulator. {| class="wikitable" |+ Static Cell Commands |- ! Character !! Description |- | <code>></code> || Turn clockwise unconditionally. |- | <code><</code> || Turn counterclockwise unconditionally. |- | <code>)</code> || Turn clockwise if the accumulator is true. |- | <code>(</code> || Turn counterclockwise if the accumulator is true. |- | <code>@</code> || Enter the next layer by 1. |- | <code>#</code> || Hop over the cell in front of you. |- | <code>0</code> || Storage. Drop a copy of the left-value on the same layer on the character. Won't drop if the accumulator is empty or AMORPHOUS. Will pick up the item to either the left or right value once. Can be reused on the same layer. |- | <code>1</code> || Storage. Drop a copy of the left-value down 1 layer on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once. |- | <code>2</code> || Storage. Drop a copy of the left-value down 2 layers on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once. |- | <code>3</code> || Storage. Drop a copy of the left-value down 3 layers on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once. |- | <code>4</code> || Storage. Drop a copy of the left-value down 4 layers on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once. |- | <code>5</code> || Storage. Drop a copy of the left-value down 5 layers on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once. |- | <code>6</code> || Storage. Drop a copy of the left-value down 6 layers on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once. |- | <code>7</code> || Storage. Drop a copy of the left-value down 7 layers on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once. |- | <code>8</code> || Storage. Drop a copy of the left-value down 8 layers on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once. |- | <code>9</code> || Storage. Drop a copy of the left-value down 9 layers on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once. |- | <code>?</code> || Clears the accumulator. |- | <code>.</code> || Prints the left-value from the accumulator only if the value in the accumulator is not AMORPHOUS or unevaluated. If it is AMORPHOUS, it will print AMORPHOUS. If it has not been evaluated, it will print UNEVALUATED. Clears the accumulator afterwards. |- | <code>,</code> || Prints the left-value from the accumulator only if the value in the accumulator is not AMORPHOUS or unevaluated. If it is AMORPHOUS, it will print AMORPHOUS. If it has not been evaluated, it will print UNEVALUATED. |- | <code>X</code> || Terminates the program. |} [[Category:2025]] [[Category:Particle automata]] [[Category:String-rewriting paradigm]] [[Category:Cell-based]] [[Category:Usability unknown]] [[Category:Linear bounded automata]] [[Category:Finite state automata]] [[Category:Cellular automata]] [[Category:Implemented]] [[Category:Self-modifying]] [[Category:Linear bounded automata]]'
Unified diff of changes made by edit (edit_diff)
'@@ -1,0 +1,203 @@ +{{infobox proglang +|name=Timeline +|paradigms=imperative +|author=[[User:Undalevein|Undalevein]] +|year=[[:Category:2025|2025]] +|memsys=variables +|dimensions=two-dimensional +|majorimpl=[https://github.com/Undalevein/Timeline Official] +|influence=[[Befunge]] +|files=<code>.timeline</code> +}} + +'''Timeline''' is an [[esoteric programming language]] created by [[Undalevein]] in January 2025. Aimed to be a language that is both difficult to read and difficult to comprehend, the design of Timeline was first conjured as a "3-dimensional programming language in a 2-dimensional projection." + +Taking some inspiration from [[Befunge]], programmers control a data pointer that points to a section in your code. The data pointer can pick up items from infinity cells in which the accumulator that automatically stores and evaluates data and operators inside it. To get access to different values or operators, you must travel downwards and only downwards to get what you want. + +==Language Overview== + +===Data Pointer=== + +Similar to Befunge, Timeline uses the same date pointer rules. + +The data pointer starts at (0,0) of your code, or the top left corner of the file. It will travel right by default, and it will keep moving right until it gets redirected. + +The program begins by first performing an action on the character the data pointer is looking for act, then evaluates the accumulator, then move. If a data pointer reaches either end of the row or column and steps out of bounds, it will loop around that same line or column. + +===Layers=== + +The programming language may seem like it's a 2D programming language, but topologically, it is a 3D programming language. Introducing: layers! + +When a program runs, the data pointer will begin at layer 0. + +The data pointer can go down the next layer by 1 when it is at the `@` character. This, in effect, will change what the Infinity Cells offer by 1. While this can allow you to get more values and operators, you can never go up, only down! And sure, because each Infinity Cell is looping you can reset all infinity cells not including the STDIN infinity cell; all you need to do is to go down to layer 43680... oh... oh no... + +Infinity Cells are characters where if the data pointer initiates it, it will receive a value or operator depending on what layer number the data pointer is in. Take the character `D` as an example where it holds digit characters 0 to 9 then repeats. If the data pointer is at layer 0, then it will get `0` into the accumulator and if the data pointer is at layer 1, then it will get `1` and so on and so forth. Until the data pointer is at layer 10 is where the digits the accumulator can get wraps around, where the data pointer will receive `0` again if pointed. Keep this in mind when you have multiple different Infinity Cells in your code! + +===Accumulator=== + +In the program, you are controlling an accumulator. Internally, the accumulator stores 3 items: a left-value, an operator, and then a right-value. The accumulator begins at the left-value, then operator, then right-value. + +The left-value and right-value are, internally, string type. However, they can behave similarly to other data types like integers, floats, or booleans. So, if you concatenate "1" and "0" to make "10" and then add "10" with "1", then it will be evaluated to "11". + +The operator can only get operator types and they can be either unary or binary operators. + +If the left-value or right-value is given an operator type or the operator is given a string type, then the accumulator will become AMORPHOUS. This means that the accumulator, if received any more items, will automatically evaluate to AMORPHOUS. It will remain AMORPHOUS until the accumulator is cleared by the clear cell `?` or this print cell `.`. + +After evaluating the cell the pointer is on, the accumulator automatically evaluates before moving to the next character. It evaluates under the following conditions: + +- If there's only the left-value (left-value is not empty), then no evaluation will be made. +- If there's a left-value and an unary operator, then an evaluation will be made. + - If the left-value is incompatible with the operator (i.e. negating `"HELLO!"`), then the accumulator becomes AMORPHOUS. + - If the left-value is compatible with the operator, it will perform the evaluation and save the result to the left-value and then removes the operator from the accumulator. +- If there's a left-value and a binary operator but the right-value is empty, then no evaluation will be made. +- If there's a left-value, a binary operator, and a right-value, then an evaluation will be made. + - If either values are incompatible with the operator (i.e. adding `"M"` to `"9"`), then the accumulator becomes AMORPHOUS. + - If both values are compatible with the operator, it will perform the evaluation and save the result to the left-value and then removes the operator and the right-value from the accumulator. + +===Types=== + +====Numbers==== + +As mentioned, although everything is a string, they can still be inferred as integer or float types. When evaluating using operators that require integers or float values, it will first evaluate the values as integers (if available) and the evaluate the values as floats. + +A string is inferred as a integer if all of characters are digit character. A string can still be an integer if the first character is a minus symbol, but it must have digit characters after it. + +Examples of integers: `154`, `-4231` + +A string is inferred as a float if all characters are a digit character and exactly one period somewhere in the string. Like the integer, a string can still be a float if the first character is a minus symbol, but it must have digit characters and a dot after it. + +Examples of floats: `356.0`, `-0.1` + +====Booleans and Truthiness==== + +Booleans are `"TRUE"` and `"FALSE"`. These are results after using a successful relational opereator evaluation. + +Technically, you can make the word `"FALSE"` and it will be considered as false internally, though I am not sure why you want to do that. + +In some scenarios when a boolean is required, the interpreter will evaluate things as truthy or falsy. Everything is considered truthy except for the following: + +- The left-value is `"FALSE"` (all capitalized). +- The left-value is a null character `\0` (only obtained through stdin input).````````````````` +- The left-value is empty. +- The accumulator is AMORPHOUS. +- The accumulator contains a binary operator that it can't evaluate yet. + +However, these below are not considered falsy. + +- Left-value is `"AMORPHOUS"`, including its lowercase variations, but the accumulator itself is not AMORPHOUS. +- Left-value is `"NULL"` or `"EMPTY"`, including their lowercase variations, but the accumulator is not actually empty. +- Left-value is `"0"` (or only zero characters). +- Left-value is any of the lowercase variations of of `"FALSE"`. + +==Command List== + +Below are the characters that are used in the program. Any other character not listed are considered comment characters. + +===Infinity Cells=== + +Infinity cells are cells that contain all of the necessary values and operators that can perform computation. Additionally, there are characters that changes the direction of your data pointer. If your data pointer is pointing at one at a given moment, it will add that item to your accumulator based on your layer number. + +{| class="wikitable" +|+ Infinity Cell Commands +|- +! Character !! Term !! Order +|- +| <code>A</code> || Booleans || <code>TRUE</code> → <code>FALSE</code> → ... +|- +| <code>B</code> || Boolean Operators || <code>not</code> → <code>and</code> → <code>or</code> → ... +|- +| <code>C</code> || Concatenation Operators || <code>concat</code> → <code>repeat</code> → ... +|- +| <code>D</code> || Digits || <code>0</code> → <code>1</code> → <code>2</code> → ... → <code>8</code> → <code>9</code> → ... +|- +| <code>E</code> || Relational Operators || <code>==</code> → <code>!=</code> → <code><</code> → <code><=</code> → <code>></code> → <code>=></code> → ... +|- +| <code>I</code> || Stdin Input || <code>Stdin[0]</code> → <code>Stdin[1]</code> → ... → <code>Stdin[n]</code> → <code>\0</code> → ... +|- +| <code>L</code> || Lowercase Letters || <code>a</code> → <code>b</code> → <code>c</code> → ... → <code>y</code> → <code>z</code> → ... +|- +| <code>M</code> || Arithmetic Operators || <code>+</code> → <code>-</code> → <code>*</code> → <code>/</code> → <code>**</code> → <code>%</code> → <code>negation</code> → ... +|- +| <code>N</code> || Bitwise Operators || <code>~</code> → <code>&</code> → <code><nowiki>|</nowiki></code> → <code><<</code> → <code>>></code> → <code>>>></code> → ... +|- +| <code>R</code> || Estimation Operators || <code>round</code> → <code>ceil</code> → <code>floor</code> → <code>trunc</code> → ... +|- +| <code>S</code> || Symbols || <code>`</code> → <code>~</code> → <code>!</code> → <code>@</code> → <code>#</code> → <code>$</code> → <code>%</code> → <code>^</code> → <code>&</code> → <code>*</code> → <code>(</code> → <code>)</code> → <code>-</code> → <code>_</code> → <code>=</code> → <code>+</code> → <code>[</code> → <code>{</code> → <code>]</code> → <code>}</code> → <code>\</code> → <code><nowiki>|</nowiki></code> → <code>;</code> → <code>:</code> → <code>'</code> → <code>"</code> → <code>,</code> → <code><</code> → <code>.</code> → <code>></code> → <code>/</code> → <code>?</code> → ... +|- +| <code>T</code> || Trigonometry Operators || <code>sin</code> → <code>cos</code> → <code>tan</code> → <code>csc</code> → <code>sec</code> → <code>cot</code> → ... +|- +| <code>U</code> || Uppercase Letters || <code>A</code> → <code>B</code> → <code>C</code> → ... → <code>Y</code> → <code>Z</code> → ... +|- +| <code>W</code> || Whitespace || <code> </code> → <code>\n</code> → <code>\t</code> → ... +|- +| <code>a</code> || Movement 1 (Changes Accumulator Direction) || <code>LEFT</code> → <code>DOWN</code> → <code>RIGHT</code> → <code>UP</code> → ... +|- +| <code>b</code> || Movement 2 (Changes Accumulator Direction) || <code>DOWN</code> → <code>RIGHT</code> → <code>UP</code> → <code>LEFT</code> → ... +|- +| <code>c</code> || Movement 3 (Changes Accumulator Direction) || <code>RIGHT</code> → <code>UP</code> → <code>LEFT</code> → <code>DOWN</code> → ... +|- +| <code>d</code> || Movement 4 (Changes Accumulator Direction) || <code>UP</code> → <code>LEFT</code> → <code>DOWN</code> → <code>RIGHT</code> → ... +|} + +===Static Cells=== + +Static Cells do not change when going down layers. Unless explicitly specified in the command's description, they will not clear the accumulator. + +{| class="wikitable" +|+ Static Cell Commands +|- +! Character !! Description +|- +| <code>></code> || Turn clockwise unconditionally. +|- +| <code><</code> || Turn counterclockwise unconditionally. +|- +| <code>)</code> || Turn clockwise if the accumulator is true. +|- +| <code>(</code> || Turn counterclockwise if the accumulator is true. +|- +| <code>@</code> || Enter the next layer by 1. +|- +| <code>#</code> || Hop over the cell in front of you. +|- +| <code>0</code> || Storage. Drop a copy of the left-value on the same layer on the character. Won't drop if the accumulator is empty or AMORPHOUS. Will pick up the item to either the left or right value once. Can be reused on the same layer. +|- +| <code>1</code> || Storage. Drop a copy of the left-value down 1 layer on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once. +|- +| <code>2</code> || Storage. Drop a copy of the left-value down 2 layers on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once. +|- +| <code>3</code> || Storage. Drop a copy of the left-value down 3 layers on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once. +|- +| <code>4</code> || Storage. Drop a copy of the left-value down 4 layers on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once. +|- +| <code>5</code> || Storage. Drop a copy of the left-value down 5 layers on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once. +|- +| <code>6</code> || Storage. Drop a copy of the left-value down 6 layers on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once. +|- +| <code>7</code> || Storage. Drop a copy of the left-value down 7 layers on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once. +|- +| <code>8</code> || Storage. Drop a copy of the left-value down 8 layers on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once. +|- +| <code>9</code> || Storage. Drop a copy of the left-value down 9 layers on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once. +|- +| <code>?</code> || Clears the accumulator. +|- +| <code>.</code> || Prints the left-value from the accumulator only if the value in the accumulator is not AMORPHOUS or unevaluated. If it is AMORPHOUS, it will print AMORPHOUS. If it has not been evaluated, it will print UNEVALUATED. Clears the accumulator afterwards. +|- +| <code>,</code> || Prints the left-value from the accumulator only if the value in the accumulator is not AMORPHOUS or unevaluated. If it is AMORPHOUS, it will print AMORPHOUS. If it has not been evaluated, it will print UNEVALUATED. +|- +| <code>X</code> || Terminates the program. +|} + +[[Category:2025]] +[[Category:Particle automata]] +[[Category:String-rewriting paradigm]] +[[Category:Cell-based]] +[[Category:Usability unknown]] +[[Category:Linear bounded automata]] +[[Category:Finite state automata]] +[[Category:Cellular automata]] +[[Category:Implemented]] +[[Category:Self-modifying]] +[[Category:Linear bounded automata]] '
New page size (new_size)
14805
Old page size (old_size)
0
Lines added in edit (added_lines)
[ 0 => '{{infobox proglang', 1 => '|name=Timeline', 2 => '|paradigms=imperative', 3 => '|author=[[User:Undalevein|Undalevein]]', 4 => '|year=[[:Category:2025|2025]]', 5 => '|memsys=variables', 6 => '|dimensions=two-dimensional', 7 => '|majorimpl=[https://github.com/Undalevein/Timeline Official]', 8 => '|influence=[[Befunge]]', 9 => '|files=<code>.timeline</code>', 10 => '}}', 11 => '', 12 => ''''Timeline''' is an [[esoteric programming language]] created by [[Undalevein]] in January 2025. Aimed to be a language that is both difficult to read and difficult to comprehend, the design of Timeline was first conjured as a "3-dimensional programming language in a 2-dimensional projection." ', 13 => '', 14 => 'Taking some inspiration from [[Befunge]], programmers control a data pointer that points to a section in your code. The data pointer can pick up items from infinity cells in which the accumulator that automatically stores and evaluates data and operators inside it. To get access to different values or operators, you must travel downwards and only downwards to get what you want. ', 15 => '', 16 => '==Language Overview==', 17 => '', 18 => '===Data Pointer===', 19 => '', 20 => 'Similar to Befunge, Timeline uses the same date pointer rules.', 21 => '', 22 => 'The data pointer starts at (0,0) of your code, or the top left corner of the file. It will travel right by default, and it will keep moving right until it gets redirected.', 23 => '', 24 => 'The program begins by first performing an action on the character the data pointer is looking for act, then evaluates the accumulator, then move. If a data pointer reaches either end of the row or column and steps out of bounds, it will loop around that same line or column.', 25 => '', 26 => '===Layers===', 27 => '', 28 => 'The programming language may seem like it's a 2D programming language, but topologically, it is a 3D programming language. Introducing: layers!', 29 => '', 30 => 'When a program runs, the data pointer will begin at layer 0.', 31 => '', 32 => 'The data pointer can go down the next layer by 1 when it is at the `@` character. This, in effect, will change what the Infinity Cells offer by 1. While this can allow you to get more values and operators, you can never go up, only down! And sure, because each Infinity Cell is looping you can reset all infinity cells not including the STDIN infinity cell; all you need to do is to go down to layer 43680... oh... oh no...', 33 => '', 34 => 'Infinity Cells are characters where if the data pointer initiates it, it will receive a value or operator depending on what layer number the data pointer is in. Take the character `D` as an example where it holds digit characters 0 to 9 then repeats. If the data pointer is at layer 0, then it will get `0` into the accumulator and if the data pointer is at layer 1, then it will get `1` and so on and so forth. Until the data pointer is at layer 10 is where the digits the accumulator can get wraps around, where the data pointer will receive `0` again if pointed. Keep this in mind when you have multiple different Infinity Cells in your code!', 35 => '', 36 => '===Accumulator===', 37 => '', 38 => 'In the program, you are controlling an accumulator. Internally, the accumulator stores 3 items: a left-value, an operator, and then a right-value. The accumulator begins at the left-value, then operator, then right-value.', 39 => '', 40 => 'The left-value and right-value are, internally, string type. However, they can behave similarly to other data types like integers, floats, or booleans. So, if you concatenate "1" and "0" to make "10" and then add "10" with "1", then it will be evaluated to "11".', 41 => '', 42 => 'The operator can only get operator types and they can be either unary or binary operators.', 43 => '', 44 => 'If the left-value or right-value is given an operator type or the operator is given a string type, then the accumulator will become AMORPHOUS. This means that the accumulator, if received any more items, will automatically evaluate to AMORPHOUS. It will remain AMORPHOUS until the accumulator is cleared by the clear cell `?` or this print cell `.`.', 45 => '', 46 => 'After evaluating the cell the pointer is on, the accumulator automatically evaluates before moving to the next character. It evaluates under the following conditions:', 47 => '', 48 => '- If there's only the left-value (left-value is not empty), then no evaluation will be made.', 49 => '- If there's a left-value and an unary operator, then an evaluation will be made.', 50 => ' - If the left-value is incompatible with the operator (i.e. negating `"HELLO!"`), then the accumulator becomes AMORPHOUS.', 51 => ' - If the left-value is compatible with the operator, it will perform the evaluation and save the result to the left-value and then removes the operator from the accumulator.', 52 => '- If there's a left-value and a binary operator but the right-value is empty, then no evaluation will be made.', 53 => '- If there's a left-value, a binary operator, and a right-value, then an evaluation will be made.', 54 => ' - If either values are incompatible with the operator (i.e. adding `"M"` to `"9"`), then the accumulator becomes AMORPHOUS.', 55 => ' - If both values are compatible with the operator, it will perform the evaluation and save the result to the left-value and then removes the operator and the right-value from the accumulator.', 56 => '', 57 => '===Types===', 58 => '', 59 => '====Numbers====', 60 => '', 61 => 'As mentioned, although everything is a string, they can still be inferred as integer or float types. When evaluating using operators that require integers or float values, it will first evaluate the values as integers (if available) and the evaluate the values as floats.', 62 => '', 63 => 'A string is inferred as a integer if all of characters are digit character. A string can still be an integer if the first character is a minus symbol, but it must have digit characters after it.', 64 => '', 65 => 'Examples of integers: `154`, `-4231`', 66 => '', 67 => 'A string is inferred as a float if all characters are a digit character and exactly one period somewhere in the string. Like the integer, a string can still be a float if the first character is a minus symbol, but it must have digit characters and a dot after it.', 68 => '', 69 => 'Examples of floats: `356.0`, `-0.1`', 70 => '', 71 => '====Booleans and Truthiness====', 72 => '', 73 => 'Booleans are `"TRUE"` and `"FALSE"`. These are results after using a successful relational opereator evaluation.', 74 => '', 75 => 'Technically, you can make the word `"FALSE"` and it will be considered as false internally, though I am not sure why you want to do that.', 76 => '', 77 => 'In some scenarios when a boolean is required, the interpreter will evaluate things as truthy or falsy. Everything is considered truthy except for the following:', 78 => '', 79 => '- The left-value is `"FALSE"` (all capitalized).', 80 => '- The left-value is a null character `\0` (only obtained through stdin input).`````````````````', 81 => '- The left-value is empty.', 82 => '- The accumulator is AMORPHOUS.', 83 => '- The accumulator contains a binary operator that it can't evaluate yet.', 84 => '', 85 => 'However, these below are not considered falsy.', 86 => '', 87 => '- Left-value is `"AMORPHOUS"`, including its lowercase variations, but the accumulator itself is not AMORPHOUS.', 88 => '- Left-value is `"NULL"` or `"EMPTY"`, including their lowercase variations, but the accumulator is not actually empty.', 89 => '- Left-value is `"0"` (or only zero characters).', 90 => '- Left-value is any of the lowercase variations of of `"FALSE"`.', 91 => '', 92 => '==Command List==', 93 => '', 94 => 'Below are the characters that are used in the program. Any other character not listed are considered comment characters.', 95 => '', 96 => '===Infinity Cells===', 97 => '', 98 => 'Infinity cells are cells that contain all of the necessary values and operators that can perform computation. Additionally, there are characters that changes the direction of your data pointer. If your data pointer is pointing at one at a given moment, it will add that item to your accumulator based on your layer number.', 99 => '', 100 => '{| class="wikitable"', 101 => '|+ Infinity Cell Commands', 102 => '|-', 103 => '! Character !! Term !! Order', 104 => '|-', 105 => '| <code>A</code> || Booleans || <code>TRUE</code> → <code>FALSE</code> → ...', 106 => '|-', 107 => '| <code>B</code> || Boolean Operators || <code>not</code> → <code>and</code> → <code>or</code> → ...', 108 => '|-', 109 => '| <code>C</code> || Concatenation Operators || <code>concat</code> → <code>repeat</code> → ...', 110 => '|-', 111 => '| <code>D</code> || Digits || <code>0</code> → <code>1</code> → <code>2</code> → ... → <code>8</code> → <code>9</code> → ...', 112 => '|-', 113 => '| <code>E</code> || Relational Operators || <code>==</code> → <code>!=</code> → <code><</code> → <code><=</code> → <code>></code> → <code>=></code> → ...', 114 => '|-', 115 => '| <code>I</code> || Stdin Input || <code>Stdin[0]</code> → <code>Stdin[1]</code> → ... → <code>Stdin[n]</code> → <code>\0</code> → ...', 116 => '|-', 117 => '| <code>L</code> || Lowercase Letters || <code>a</code> → <code>b</code> → <code>c</code> → ... → <code>y</code> → <code>z</code> → ...', 118 => '|-', 119 => '| <code>M</code> || Arithmetic Operators || <code>+</code> → <code>-</code> → <code>*</code> → <code>/</code> → <code>**</code> → <code>%</code> → <code>negation</code> → ...', 120 => '|-', 121 => '| <code>N</code> || Bitwise Operators || <code>~</code> → <code>&</code> → <code><nowiki>|</nowiki></code> → <code><<</code> → <code>>></code> → <code>>>></code> → ...', 122 => '|-', 123 => '| <code>R</code> || Estimation Operators || <code>round</code> → <code>ceil</code> → <code>floor</code> → <code>trunc</code> → ...', 124 => '|-', 125 => '| <code>S</code> || Symbols || <code>`</code> → <code>~</code> → <code>!</code> → <code>@</code> → <code>#</code> → <code>$</code> → <code>%</code> → <code>^</code> → <code>&</code> → <code>*</code> → <code>(</code> → <code>)</code> → <code>-</code> → <code>_</code> → <code>=</code> → <code>+</code> → <code>[</code> → <code>{</code> → <code>]</code> → <code>}</code> → <code>\</code> → <code><nowiki>|</nowiki></code> → <code>;</code> → <code>:</code> → <code>'</code> → <code>"</code> → <code>,</code> → <code><</code> → <code>.</code> → <code>></code> → <code>/</code> → <code>?</code> → ...', 126 => '|-', 127 => '| <code>T</code> || Trigonometry Operators || <code>sin</code> → <code>cos</code> → <code>tan</code> → <code>csc</code> → <code>sec</code> → <code>cot</code> → ...', 128 => '|-', 129 => '| <code>U</code> || Uppercase Letters || <code>A</code> → <code>B</code> → <code>C</code> → ... → <code>Y</code> → <code>Z</code> → ...', 130 => '|-', 131 => '| <code>W</code> || Whitespace || <code> </code> → <code>\n</code> → <code>\t</code> → ...', 132 => '|-', 133 => '| <code>a</code> || Movement 1 (Changes Accumulator Direction) || <code>LEFT</code> → <code>DOWN</code> → <code>RIGHT</code> → <code>UP</code> → ...', 134 => '|-', 135 => '| <code>b</code> || Movement 2 (Changes Accumulator Direction) || <code>DOWN</code> → <code>RIGHT</code> → <code>UP</code> → <code>LEFT</code> → ...', 136 => '|-', 137 => '| <code>c</code> || Movement 3 (Changes Accumulator Direction) || <code>RIGHT</code> → <code>UP</code> → <code>LEFT</code> → <code>DOWN</code> → ...', 138 => '|-', 139 => '| <code>d</code> || Movement 4 (Changes Accumulator Direction) || <code>UP</code> → <code>LEFT</code> → <code>DOWN</code> → <code>RIGHT</code> → ...', 140 => '|}', 141 => '', 142 => '===Static Cells===', 143 => '', 144 => 'Static Cells do not change when going down layers. Unless explicitly specified in the command's description, they will not clear the accumulator.', 145 => '', 146 => '{| class="wikitable"', 147 => '|+ Static Cell Commands', 148 => '|-', 149 => '! Character !! Description', 150 => '|-', 151 => '| <code>></code> || Turn clockwise unconditionally.', 152 => '|-', 153 => '| <code><</code> || Turn counterclockwise unconditionally.', 154 => '|-', 155 => '| <code>)</code> || Turn clockwise if the accumulator is true.', 156 => '|-', 157 => '| <code>(</code> || Turn counterclockwise if the accumulator is true.', 158 => '|-', 159 => '| <code>@</code> || Enter the next layer by 1. ', 160 => '|-', 161 => '| <code>#</code> || Hop over the cell in front of you.', 162 => '|-', 163 => '| <code>0</code> || Storage. Drop a copy of the left-value on the same layer on the character. Won't drop if the accumulator is empty or AMORPHOUS. Will pick up the item to either the left or right value once. Can be reused on the same layer.', 164 => '|-', 165 => '| <code>1</code> || Storage. Drop a copy of the left-value down 1 layer on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once.', 166 => '|-', 167 => '| <code>2</code> || Storage. Drop a copy of the left-value down 2 layers on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once.', 168 => '|-', 169 => '| <code>3</code> || Storage. Drop a copy of the left-value down 3 layers on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once.', 170 => '|-', 171 => '| <code>4</code> || Storage. Drop a copy of the left-value down 4 layers on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once.', 172 => '|-', 173 => '| <code>5</code> || Storage. Drop a copy of the left-value down 5 layers on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once.', 174 => '|-', 175 => '| <code>6</code> || Storage. Drop a copy of the left-value down 6 layers on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once.', 176 => '|-', 177 => '| <code>7</code> || Storage. Drop a copy of the left-value down 7 layers on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once.', 178 => '|-', 179 => '| <code>8</code> || Storage. Drop a copy of the left-value down 8 layers on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once.', 180 => '|-', 181 => '| <code>9</code> || Storage. Drop a copy of the left-value down 9 layers on the character. Won't drop if the accumulator is empty or AMORPHOUS or if a value has already been dropped down before. Will pick up item the item to either the left or right value once.', 182 => '|-', 183 => '| <code>?</code> || Clears the accumulator.', 184 => '|-', 185 => '| <code>.</code> || Prints the left-value from the accumulator only if the value in the accumulator is not AMORPHOUS or unevaluated. If it is AMORPHOUS, it will print AMORPHOUS. If it has not been evaluated, it will print UNEVALUATED. Clears the accumulator afterwards.', 186 => '|-', 187 => '| <code>,</code> || Prints the left-value from the accumulator only if the value in the accumulator is not AMORPHOUS or unevaluated. If it is AMORPHOUS, it will print AMORPHOUS. If it has not been evaluated, it will print UNEVALUATED.', 188 => '|-', 189 => '| <code>X</code> || Terminates the program.', 190 => '|}', 191 => '', 192 => '[[Category:2025]]', 193 => '[[Category:Particle automata]]', 194 => '[[Category:String-rewriting paradigm]]', 195 => '[[Category:Cell-based]]', 196 => '[[Category:Usability unknown]]', 197 => '[[Category:Linear bounded automata]]', 198 => '[[Category:Finite state automata]]', 199 => '[[Category:Cellular automata]]', 200 => '[[Category:Implemented]]', 201 => '[[Category:Self-modifying]]', 202 => '[[Category:Linear bounded automata]]' ]
Unix timestamp of change (timestamp)
'1747632187'