pass a symbol

From Esolang
Jump to navigation Jump to search

pass a symbol or PAS (lol) is an esolang where the whole idea is you can make your own commands. Although this should not be considered a metalang (I think), it is a category anyway.

How It Works

You start by putting a top binary number, then a symbol, and then another binary digit, like this:

0
E
1

This defines E, which will take input as a binary number and output another one. If it has input 0, it will output 1. BUT this does not mean that passing 1 gives 0. Since that's not defined, passing a 1 to E will give 1. To define a NOT gate with symbol E, it would be:

0
E
1
-
1
E
0

This defines a NOT gate, and a - separates these definitions. There is a special symbol that can replace a binary digit, which is i. This symbol will take user input as a binary digit (or digits). For example, like this:

i
E
0

Adding a o at the end of a binary digit at the bottom of a definition will make it output itself. To make it output in Unicode, a $ is used instead:

0
E
1
#
0
E
o

Also, # separates definitions from the calculation. To make an operator pass the result it makes to itself recursively, a ^ is used at the start of the first definition, and if there is a state that ends in * it will break out of recursion, which will make it pass the result to itself. If you want it for a spesific output it can replace the input of a function. If this is done ~ Will break the loop. Putting an X at input will make it halt itself. One last thing: there is a tape extending infinitely to the right. > and < move around the tape, ( is o but on the current cell, and ) is $ (these only work after the # or in the output of a definition). Putting a % at the end of the output in a definition will put that into the tape, and putting a * instead of a binary number in the # section will take the current tape cell.

examples

Truth-machine:

^
0
E
0oX
-
1
E
11o
-
11
E
1o
#
i
E

infinite loop:

^
0
E
0
#
0
E

Double layer buffer:

0
¬
1
- 
1
¬
0
#
0
¬
¬

logic gates

AND

01
A
0
-
10
A
0
-
00
A
0
- 
11
A
1
#
11
A

OR

10
R
1
-
01
R
1
-
11
R
1
-
00
R
0
#
11
R

NOR

10
R
1
-
01
R
1
-
11
R
1
-
00
R
0
-
0
¬
1
- 
1
¬
0
#
11
R
¬

NAND

01
A
0
-
10
A
0
-
00
A
0
- 
11
A
1
-
0
¬
1
- 
1
¬
0
#
11
A
¬

XOR

10
X
1
-
01
X
1
-
11
X
0
-
00
X
0
#
11
X

XNOR

10
X
1
-
01
X
1
-
11
X
0
-
00
X
0
-
0
¬
1
- 
1
¬
0
#
11
X
¬

notes

  • im not sure if this is even possible but isn't this both imperative and declarative?
  • im pretty sure this is NOT turing complete