- This is still a work in progress. It may be changed in the future.
- This article is a stub, which means that it is not detailed enough and needs to be expanded. Please help us by .
Arís (Irish Gaelic for "when", [əˈɾʲiːʃ] "uh-REESH") is an esoteric programming language made by Nurdle. Arís is based off the timeline concept of Cathain, the main difference is that Arís grants control over the timelines.
The Initial state is
All text replacements must be two hexidecimal numbers (can be any length) seperated by whitespace.
fffffff 0000003 are all valid, while
There is also another allowed character:
$ which is the tempval, the tempval acts like a pointer to matches,
$ ff points to all instances of
ff in the current string's state, even if said instances change
$ won't update until you set it again.
ff $ replaces every instance of
ff with the current tempval value.
ff l$ replaces every instance of
ff with the number of matches of the tempval in hexidecimal.
You can restrict a command's effect using parenthesis,
(0xFF) would only allow an operation to effect the hexidecimal digit at 255 in the string (limiting to nibble 255, so to speak).
(0x00-0xFF) restricts an operation to the characters between 0 and 255 in the string.
You can use
% which will be replaced with user input (ascii codes in hexidecimal) when it is reached, you can simply do
% which will just insert into the string (replaces anything in its way).
ff % will replace any instance of
ff in the string with the user's input (it replaces them in order from the first instance to the last instance, if it runs out of characters from the user's input then it just uses
; BREAK #(timeline id) ; ends a timeline if its id is equal to the given id (only if it is run by said timeline).
; COLLAPSE ; ends a timeline if it is run.
; out (output) ; writes the ascii equivalent of its input to the console, if given
$ as an input then it outputs the value of every match (does update the value of the matches), if given a range as input then it will output only what is in that range.
Goto labels are defined using
[ Label_Name ] where the only characters that aren't allowed being whitespace and square brackets.
you can call them using
In Arís, there are special labels called "timestamps", they are defined by typing three colons around the name of the timestamp.
::: timestamp_name :::, The only characters that aren't allowed being whitespace and colons.
Though timestamps seem similar to goto-labels, they act very differently, when you call a timestamp, you must use either
; new_to @(name) ; or
; new_from @(name) ;.
new_to creates a timeline where the state is whatever the state was when that timestamp was declared, while
new_from applies all the commands after the timestamp to the initial state (does not read commands that haven't been read by the calling timeline)
ff aa ::: x ::: aa af ; new_to @x ; f 0
gives us two timelines:
|Timeline 1||Timeline 2|
as you can see, Timeline 2 skipped
now if we instead use
ff aa ::: x ::: aa af ; new_from @x ; f 0
we will get:
|Timeline 1||Timeline 2|
since Timeline 2 didn't run
aa af didn't do anything to its string.
new_to skips all the code after the timestamp, while
new_from skipps all the code before the timestamp.
Timelines act as the only way to compare values for conditions.
ff 30 ::: x ::: % ; new_to @x ; ; if #0 #1 are EQ ; ; then out 30 ;
The code above prints "0" only if the user gives "0" as input.
#0 gets the current state of the first timeline,
$0 gets the current value of the tempval of the first timeline.
ff 30 ::: x ::: % ; new_to @x ; ; if #0 #1 are EQ ; ; BREAK #1 ; ; then goto @zero ; [ one ] ; out 31 ; ; goto @one ; [ zero ] ; out 30 ;
Arís has a theoretically infinite tape that can be accessed arbitrarily, and internal logic aswell, therefore it is Turing-complete
- Cathain - The origin of Arís's Time concept
- 5D Brainfuck With Multiverse Time Travel another Time related language.
- 5D 5D Brainfuck With Multiverse Time Travel With Multiverse Time Travel another Time related language.