SELENE.
Jump to navigation
Jump to search
SELENE. is a language inspired by SELECT., but using hyperoperators instead of just exponentiation and logarithms.
Every command is separated by a space, with newlines able to be placed anywhere in between commands. Any line starting with {
is a comment line. There are 3 pointers: the data pointer (DP), the base selector (B), and the rank selector (R). The current cell is the cell pointed at by DP. All cells are initially set to 1/2, and can hold any positive real number.
Commands
Command  Function 

left  Move DP one space to the left 
right  Move the DP one space to the right 
start  If current cell is 0, jump 1 command past matching end

end  If current cell isn't 0, jump 1 command past matching start

take  Input either an integer (a string containing only 09, like 1234 ) or a fraction (2 integers divided by a / , like 12/34 ) and store it in the current cell

Print the current cell's decimal expansion. If it repeats forever after a certain point, cut it after the first repetition. Remove trailing 0 s
 
ascii  Print the ASCII character corresponding to the current cell rounded to the nearest integer mod 128 
setr  Move R to current cell 
setb  Move B to current cell 
power  Set current cell to h(R,DP,B) (see Hyperoperations section) 
root  Set current cell to rt(R,DP,B) (see Hyperoperations section) 
Hyperoperations
The hyperoperations are defined as:
h(0,a,b) = a+b h(r,a,≤1) {r∈N} = a h(r+1,a,b+1) {r∈N} = h(r,a,h(r+1,a,b)) rt(r,a,b) is defined so that rt(r,h(r,a,b),b) = a m(r,a,b) {r∈N} = rt(r+1,h(r,a,b),2) m(m(0,x,y),a,b) {m(0,x,y)∉N} = L, where: a(0) = a b(0) = b a(i+1) = m(x,a(i),b(i)) b(i+1) = m(y,a(i),b(i)) L = lim{x>inf}(a(i)) M(r,a,b) is defined so that m(r,M(r,a,b),b) = a and m(r,M(r,a,b),a) = b h(r,a,b) {r∉N} = M(r,m(r,a,b),M(r,2,4)) h(r,a,b) {r∉Q} = lim{x>r}(h(x,a,b))
Example program: Truthmachine
take start print end print