List of operators

From Esolang
Jump to navigation Jump to search

This page serves as an incomplete list of all the operators ever. It lists, in no particular order, operators, their syntax in RPN and Infix, their type expression, and of course, what they serve to do.

Adding operators

You are free to add new operators at will.

Multiple operators may be assigned to the same symbol, but it is recommended that when creating a new operator, one attempts to use a thus far unused operation. Symbols should preferably not be alphanumeric for any languages, and may be multiple characters long.

A note on types

Types in this article are written in pseudo-Haskell, as Haskell is god.

The operators

Arithmetic

Symbol(s) Type RPN Infix Name Function Example Output
+ Num x, Num y, Num z => x -> y -> z x y + x+y ADD Obtain the sum of x and y 5+2.3 7.3
- Num x, Num y, Num z => x -> y -> z x y - x-y SUB or SUBTRACT Obtain the difference of x and y 5-2 3
*, × Num x, Num y, Num z => x -> y -> z x y * x*y MULT or MULTIPLY Obtain the product of two numbers 2*3 6
/, ÷ Num x, Num y, Num z => x -> y -> z x y / x/y DIV or DIVIDE Obtain the quotient of x divided by y 6/2 3
% Num x, Num y, Num z => x -> y -> z x y % x%u MOD or MODULUS Obtain the remainder of dividing x by y 9%2 1
**, ^ Num x, Num y, Num z => x -> y -> z x y ** x**y POW or EXP or EXPONENT Raise x to the power of y 2**8 256
Num x, Num y => x -> y x √ √x SQRT Calculate the square root of a number √256 8
Num x, Num y => x -> y x ∛ ∛x CBRT Calculate the cube root of a number ∛512 8
Num x, Num y => x -> y x ∜ ∜x TSRT Calculate the fourth root of a number ∜256 4
Num x, Num y, Num z => x -> y -> z x y √ x√y ROOT Calculate an arbitrary root of a number 2√256 8
Num x, Num y => x -> y x ⍟ ⍟x NATLOG Calculate the natural logarithm of a number ⍟1000 6.907...
Num x, Num y, Num z => x -> y -> z x y ⍟ x⍟y LOG or LOGARITHM Calculate the power that a number must be raised to to produce another number 3⍟81 3
Num w, Num x, Num y, Num z => w -> x -> y -> z x y z ‰ x‰y,z EXPMOD or EXPONENTIAL MODULUS Calculate a number to a power modulus another number (an operation more efficient than calculating a number to a power then calculating the result of that modulus a number, and it doesn't force you to define extra space) 2‰16,12 4
n s Num x, Num y, Num z => x -> y -> z x y <arrows> or x y z ↑ x<arrows> Knuth's Up Arrow Notation/Hyperoperations Use the n-2th hyperoperation on arguments x and y; may have an additional argument z representing the value of n in RPN 3↑3 3**(3**3)=7625597484987

Conversions

Symbol(s) Type RPN Infix Name Function Example Output
? Boolable a => a -> Bool x ? x? BOOLEANIZE Test an arbitrary value for truthiness: Return TRUE if it evaluates to true and FALSE if it evaluates to false 5? TRUE

Boolean Logic

Symbol(s) Type RPN Infix Name Function Example Output

Relational Operators

Symbol(s) Type RPN Infix Name Function Example Output

Bitwise

A "binable" is something that can be represented as a string of bits. canbe_BIN:t means a bitable specifically of type t. Note that any bitwise operator, unless otherwise noted or obviously impossible, may work in one of two ways: Either starting at the highest "1" bit of its greatest argument and working down from there or working on a fixed-width word. Examples here use the former method.

A number in square brackets after a type means something of a specific number of bits in width.

Symbol(s) Type RPN Infix Name Function Example Output
! or ~ Binable x => x -> x x ! !x Bitwise NOT NOT each bit of an integer or other binable. ~5 -6
& Binable x => x -> x -> x x y & x&y Bitwise AND AND each pair of bits in two integers or other binables. 5&3 1
| Binable x => x -> x -> x x y | x|y Bitwise OR OR each pair of bits in two integers or other binables 5|3 7
^ Binable x => x -> x -> x x y ^ x^y Bitwise XOR XOR each pair of bits in two integers or other binables 5^3 6
!&, ~& Binable x => x -> x -> x x y !& x!&y Bitwise NAND NAND each pair of bits in two integers or other binables 5!&3 -2
!|, ~| Binable x => x -> x -> x x y !| x!|y Bitwise NOR NOR each pair of bits in two integers or other binables 5!|3 -8
!^, ~^ Binable x => x -> x -> x x y !^ x!^y Bitwise XNOR XNOR each pair of bits in two integers or other binables 5!^3 -7
$ Binable x => x -> x -> x or Binable x => x -> x -> y x y $ x$y MINGLE Alternate the bits of the first and second argument (first[0], second[0], first[1], second[1]...). Results in a number of twice the width. Alternatively, returns a tuple split down the middle of two integers of the same width as its argument. 3$2=112$102 11102=14
& or &: Binable x => x -> x or Binable x => x -> y x &: &:x Unary AND AND each pair of bits in the number, e.g. the first and second, then the third and fourth, et cetera. Results in a number of half bitwidth. Can only operate on fixed-width values. &:11=&:10112 1=012
| or |: Binable x => x -> x or Binable x => x -> y x |: |:x Unary OR OR each pair of bits in the number, e.g. the first and second, then the third and fourth, et cetera. Results in a number of half bitwidth. Can only operate on fixed-width values. |:11=|:10112 3=112
^ or ^: Binable x => x -> x or Binable x => x -> y x ^: ^:x Unary XOR XOR each pair of bits in the number, e.g. the first and second, then the third and fourth, et cetera. Results in a number of half bitwidth. Can only operate on fixed-width values. ^:11=^:10112 2=102
~ Binable x => x -> x -> x or Binable x => x -> x-> y x y ~ x~y SELECT ??? (fill this out) 12~5=11002~1012 2=102

Tritwise

Symbol(s) Type RPN Infix Name Function Example Output

Logical

Symbol(s) Type RPN Infix Name Function Example Output

Container Membership

Symbol(s) Type RPN Infix Name Function Example Output

List Comprehension

Symbol(s) Type RPN Infix Name Function Example Output
!! [a] -> Int -> a x y !! x!!y ITEM Get an item from list x by index y [1, 2, 3]!!0 1