BracketOnly

It uses only two characters: Brackets! (). Thus the name.
==Syntax==
BracketOnly uses nested brackets, brackets must be matched, there must be even groups of brackets, and each group must be valid too.
For example:
 (
is invalid because it is unmatched.
 (())()(()())
is invalid because there are 3 groups, which is an odd number.
 (())()
is invalid because the first group has one group, which is an odd number.
Groups are divided two by two: , F is the ID of the function, and p1, p2, p3, ... are arguments. That calls the function with the ID F and arguments p1, p2, p3, ... 
==Memory model==
BracketOnly uses an unbounded array of signed bignums.
==Functions==
BracketOnly uses built-in functions, they are as follows:
 Function table
ID	Name (not used in actual programming)	arguments 	Description
0 	one 	() 	Returns 1
1 	add 	(a,b,c,d,...)	Returns the sum of all arguments
2 	mul 	(a,b,c,d,...)	Returns the product of all arguments
3 	sub 	(a,b) 	Returns a-b
4 	div 	(a,b) 	Returns the quotient of a/b
5 	mod 	(a,b) 	Returns the remainder of a/b
6 	inp 	() 	Returns the input integer
7 	inpc 	() 	Returns the value of the input Unicode character
8 	out 	(x) 	Output x as number and return x
9 	outc 	(x) 	Output the Unicode character with value x and return x
10	rnd 	(x,y) 	Returns random integer from x to y
11	if 	(a,b,c) 	If a is not zero, evaluate b, otherwise evaluate c
12	while 	(a,b) 	While a is not zero, evaluate b, return the sum of all evaluations
13	read 	(i) 	Return the i-th element (starting from 0) of the array
14	write 	(i,j) 	Set the i-th element (starting from 0) of the array to j
15	and 	(x,y) 	return x bitwise AND y
16	or 	(x,y) 	return x bitwise OR y
17	xor 	(x) 	return x bitwise XOR y
18	not 	(x) 	return 1 if x is 0, otherwise 0
19	lt 	(x,y) 	return 1 if x < y, otherwise 0
20	gt 	(x,y) 	return 1 if x > y, otherwise 0
21	eq 	(x,y) 	return 1 if x = y, otherwise 0
22	ne 	(x,y) 	return 1 if x != y, otherwise 0
23	le 	(x,y) 	return 1 if x <= y, otherwise 0
24	ge 	(x,y) 	return 1 if x >= y, otherwise 0
Note that if the function ID consists of multiple values, they are summed to get the ID, for example:
 (()()()())(()())
Will return 1 by calling ().
==Examples==
===Constants===
The following Python program generates constants:
memo={0:,1:'()()'}
def generate(x):
 if x in memo:
 return memo[x]
 l=[]
 for i in range(1,x):
 l.append(generate(i)+generate(x-i))
 for i in range(2,x):
 if x%i==0:
 l.append('(()()()())((()())('+generate(i)+')'+'(()())('+generate(x//i)+'))')
 res=l[0]
 for i in l[1:]:
 if len(i)<len(res):
 res=i
 memo[x]=res
 return res
for i in range(100):
 print(f'{i} - '+generate(i))
Which are:
0 - 
1 - ()()
2 - ()()()()
3 - ()()()()()()
4 - ()()()()()()()()
5 - ()()()()()()()()()()
6 - ()()()()()()()()()()()()
7 - ()()()()()()()()()()()()()()
8 - ()()()()()()()()()()()()()()()()
9 - ()()()()()()()()()()()()()()()()()()
10 - ()()()()()()()()()()()()()()()()()()()()
11 - ()()()()()()()()()()()()()()()()()()()()()()
12 - ()()()()()()()()()()()()()()()()()()()()()()()()
13 - ()()()()()()()()()()()()()()()()()()()()()()()()()()
14 - ()()()()()()()()()()()()()()()()()()()()()()()()()()()()
15 - ()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
16 - (()()()())((()())(()()()()()()()())(()())(()()()()()()()()))
17 - ()()(()()()())((()())(()()()()()()()())(()())(()()()()()()()()))
18 - (()()()())((()())(()()()()()())(()())(()()()()()()()()()()()()))
19 - ()()(()()()())((()())(()()()()()())(()())(()()()()()()()()()()()()))
20 - (()()()())((()())(()()()()()()()())(()())(()()()()()()()()()()))
21 - ()()(()()()())((()())(()()()()()()()())(()())(()()()()()()()()()()))
22 - ()()()()(()()()())((()())(()()()()()()()())(()())(()()()()()()()()()()))
23 - ()()()()()()(()()()())((()())(()()()()()()()())(()())(()()()()()()()()()()))
24 - (()()()())((()())(()()()()()()()())(()())(()()()()()()()()()()()()))
25 - (()()()())((()())(()()()()()()()()()())(()())(()()()()()()()()()()))
26 - ()()(()()()())((()())(()()()()()()()()()())(()())(()()()()()()()()()()))
27 - ()()()()(()()()())((()())(()()()()()()()()()())(()())(()()()()()()()()()()))
28 - (()()()())((()())(()()()()()()()())(()())(()()()()()()()()()()()()()()))
29 - ()()(()()()())((()())(()()()()()()()())(()())(()()()()()()()()()()()()()()))
30 - (()()()())((()())(()()()()()()()()()())(()())(()()()()()()()()()()()()))
31 - ()()(()()()())((()())(()()()()()()()()()())(()())(()()()()()()()()()()()()))
32 - (()()()())((()())(()()()()()()()())(()())(()()()()()()()()()()()()()()()()))
33 - ()()(()()()())((()())(()()()()()()()())(()())(()()()()()()()()()()()()()()()()))
34 - ()()()()(()()()())((()())(()()()()()()()())(()())(()()()()()()()()()()()()()()()()))
35 - (()()()())((()())(()()()()()()()()()())(()())(()()()()()()()()()()()()()()))
36 - (()()()())((()())(()()()()()()()()()()()())(()())(()()()()()()()()()()()()))
37 - ()()(()()()())((()())(()()()()()()()()()()()())(()())(()()()()()()()()()()()()))
38 - ()()()()(()()()())((()())(()()()()()()()()()()()())(()())(()()()()()()()()()()()()))
39 - ()()()()()()(()()()())((()())(()()()()()()()()()()()())(()())(()()()()()()()()()()()()))
40 - (()()()())((()())(()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()))
41 - ()()(()()()())((()())(()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()))
42 - (()()()())((()())(()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()))
43 - ()()(()()()())((()())(()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()))
44 - ()()()()(()()()())((()())(()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()))
45 - (()()()())((()())(()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()))
46 - ()()(()()()())((()())(()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()))
47 - ()()()()(()()()())((()())(()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()))
48 - (()()()())((()())(()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()))
49 - (()()()())((()())(()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()))
50 - ()()(()()()())((()())(()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()))
51 - ()()()()(()()()())((()())(()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()))
52 - ()()()()()()(()()()())((()())(()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()))
53 - ()()()()()()()()(()()()())((()())(()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()))
54 - (()()()())((()())(()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()))
55 - ()()(()()()())((()())(()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()))
56 - (()()()())((()())(()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()))
57 - ()()(()()()())((()())(()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()))
58 - ()()()()(()()()())((()())(()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()))
59 - ()()()()()()(()()()())((()())(()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()))
60 - (()()()())((()())(()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()))
61 - ()()(()()()())((()())(()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()))
62 - ()()()()(()()()())((()())(()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()))
63 - (()()()())((()())(()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()))
64 - (()()()())((()())(()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()))
65 - ()()(()()()())((()())(()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()))
66 - (()()()())((()())(()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()()()))
67 - ()()(()()()())((()())(()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()()()))
68 - ()()()()(()()()())((()())(()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()()()))
69 - ()()()()()()(()()()())((()())(()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()()()))
70 - (()()()())((()())(()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()))
71 - ()()(()()()())((()())(()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()))
72 - (()()()())((()())(()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()))
73 - ()()(()()()())((()())(()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()))
74 - ()()()()(()()()())((()())(()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()))
75 - ()()()()()()(()()()())((()())(()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()))
76 - ()()()()()()()()(()()()())((()())(()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()))
77 - (()()()())((()())(()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()()()))
78 - ()()(()()()())((()())(()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()()()))
79 - ()()()()(()()()())((()())(()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()()()))
80 - (()()()())((()())(()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()))
81 - (()()()())((()())(()()()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()))
82 - ()()(()()()())((()())(()()()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()))
83 - ()()()()(()()()())((()())(()()()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()))
84 - (()()()())((()())(()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()()()()()))
85 - ()()(()()()())((()())(()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()()()()()))
86 - ()()()()(()()()())((()())(()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()()()()()))
87 - ()()()()()()(()()()())((()())(()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()()()()()))
88 - (()()()())((()())(()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()()()))
89 - ()()(()()()())((()())(()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()()()))
90 - (()()()())((()())(()()()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()))
91 - ()()(()()()())((()())(()()()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()))
92 - ()()()()(()()()())((()())(()()()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()))
93 - ()()()()()()(()()()())((()())(()()()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()))
94 - ()()()()()()()()(()()()())((()())(()()()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()))
95 - (()()()())((()())(()()()()()()()()()())(()())(()()(()()()())((()())(()()()()()())(()())(()()()()()()()()()()()()))))
96 - (()()()())((()())(()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()()()()()))
97 - ()()(()()()())((()())(()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()()()()()))
98 - (()()()())((()())(()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()()()()()()()()()))
99 - (()()()())((()())(()()()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()()()))
===Cat program===
 (()()()()()()()()()()()()()()()()()()()()()()()())((()()()()()()()()()()()()()()()()()())((()()()()()()()()()()()()()())()))
===A+B Problem===
 (()()()()()()()()()()()()()()()())((()())((()()()()()()()()()()()())()(()()()()()()()()()()()())()))
======
 (()()()()()()()()()()()()()()()()()())((()())(()()()()()()(()()()())((()())(()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()))))
Alternative:
 (()()()()()()()()()()()()()()()())((()())(()()()()()()()()))
===Hello World===
(()()()()()()()()()()()()()()()()()())((()()()())((()())(()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()())))(()()()()()()()()()()()()()()()()()())((()())(()()(()()()())((()())(()()()()()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()))))(()()()()()()()()()()()()()()()()()())((()()()())((()())(()()()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()()()()())))(()()()()()()()()()()()()()()()()()())((()()()())((()())(()()()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()()()()())))(()()()()()()()()()()()()()()()()()())((()())(()()(()()()())((()())(()()()()()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()()()))))(()()()()()()()()()()()()()()()()()())((()())(()()()()(()()()())((()())(()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()))))(()()()()()()()()()()()()()()()()()())((()()()())((()())(()()()()()()()())(()())(()()()()()()()()()()()()()()()())))(()()()()()()()()()()()()()()()()()())((()())(()()()()()()(()()()())((()())(()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()()()()()))))(()()()()()()()()()()()()()()()()()())((()())(()()(()()()())((()())(()()()()()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()()()))))(()()()()()()()()()()()()()()()()()())((()()()())((()())(()()()()()()()()()()()())(()())(()()(()()()())((()())(()()()()()())(()())(()()()()()()()()()()()())))))(()()()()()()()()()()()()()()()()()())((()()()())((()())(()()()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()()()()()())))(()()()()()()()()()()()()()()()()()())((()()()())((()())(()()()()()()()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()()()()()()()())))(()()()()()()()()()()()()()()()()()())((()())(()()(()()()())((()())(()()()()()()()())(()())(()()()()()()()()()()()()()()()()))))
===Truth Machine===
(()()()()()()()()()()()()()()()()()()()()()()()()()()()())((()())()(()()()()()()()()()()()())())(()()()()()()()()()()()()()()()())((()()()()()()()()()()()()()()()()()()()()()()()()()())((()())()))(()()()()()()()()()()()()()()()()()()()()()()()())((()()()()()()()()()()()()()()()()()()()()()()()()()())((()())())(()()()()()()()()()()()()()()()())(()()))
Generated with:
 print(Write(0,Inp())+Out(Read(0))+While(Read(0),Out(1)))
===Fibonacci===
(()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()()())(()()()()()()()()()()()()()()()()()()()()()()()())(()()(()())((()()()()()()()()()()()()()()()())((()()()()()()()()()()()()()()()()()()()()()()()()()())((()())()))(()()()()()()()()()()()()()()()()()()()()()()()()()()()())((()())(()()()())(()())((()()()()()()()()()()()()()()()()()()()()()()()()()())((()())())(()()()()()()()()()()()()()()()()()()()()()()()()()())(()())))(()()()()()()()()()()()()()()()()()()()()()()()()()()()())((()())()(()()()()()()()()()()()()()()()()()()()()()()()()()())(()()))(()()()()()()()()()()()()()()()()()()()()()()()()()()()())(()()(()()()()()()()()()()()()()()()()()()()()()()()()()())((()())(()()()())))))
Generated with:
 print(Write(1,1)+While(1,Add(Out(Read(0)),Write(2,Add(Read(0),Read(1))),Write(0,Read(1)),Write(1,Read(2)))))
===Never Gonna Give You Up===
BracketOnly/Rickroll, an unoptimized implementation, it is LZMA compressed and encoded with Base64 since the original program is 264108 bytes long!
==Bogen==
Bogen, a generator in Python, allows users to generate BracketOnly code easily, its source code is like this:
memo={0:,1:'()()'}
def generate(x):
 if x in memo:
 return memo[x]
 l=[]
 for i in range(1,x):
 l.append(generate(i)+generate(x-i))
 for i in range(2,x):
 if x%i==0:
 l.append('(()()()())((()())('+generate(i)+')'+'(()())('+generate(x//i)+'))')
 res=l[0]
 for i in l[1:]:
 if len(i)<len(res):
 res=i
 memo[x]=res
 return res
def isonebracket(x):
 num,cnt=0,0
 for i in x:
 if i=='(':
 num+=1
 else:
 num-=1
 if not num:
 cnt+=1
 return cnt==2
def merge(x):
 if not isonebracket(x):
 return '(()())('+x+')'
 return x
def build(x):
 if isinstance(x,str):
 return x
 return merge(generate(x))
def One(*args):
 return "(" + generate(0) + ")(" + "".join(map(build, args)) + ")"
def Add(*args):
 return "(" + generate(1) + ")(" + "".join(map(build, args)) + ")"
def Mul(*args):
 return "(" + generate(2) + ")(" + "".join(map(build, args)) + ")"
def Sub(*args):
 return "(" + generate(3) + ")(" + "".join(map(build, args)) + ")"
def Div(*args):
 return "(" + generate(4) + ")(" + "".join(map(build, args)) + ")"
def Mod(*args):
 return "(" + generate(5) + ")(" + "".join(map(build, args)) + ")"
def Inp(*args):
 return "(" + generate(6) + ")(" + "".join(map(build, args)) + ")"
def Inpc(*args):
 return "(" + generate(7) + ")(" + "".join(map(build, args)) + ")"
def Out(*args):
 return "(" + generate(8) + ")(" + "".join(map(build, args)) + ")"
def Outc(*args):
 return "(" + generate(9) + ")(" + "".join(map(build, args)) + ")"
def Rnd(*args):
 return "(" + generate(10) + ")(" + "".join(map(build, args)) + ")"
def If(*args):
 return "(" + generate(11) + ")(" + "".join(map(build, args)) + ")"
def While(*args):
 return "(" + generate(12) + ")(" + "".join(map(build, args)) + ")"
def Read(*args):
 return "(" + generate(13) + ")(" + "".join(map(build, args)) + ")"
def Write(*args):
 return "(" + generate(14) + ")(" + "".join(map(build, args)) + ")"
def And(*args):
 return "(" + generate(15) + ")(" + "".join(map(build, args)) + ")"
def Or(*args):
 return "(" + generate(16) + ")(" + "".join(map(build, args)) + ")"
def Xor(*args):
 return "(" + generate(17) + ")(" + "".join(map(build, args)) + ")"
def Not(*args):
 return "(" + generate(18) + ")(" + "".join(map(build, args)) + ")"
def Lt(*args):
 return "(" + generate(19) + ")(" + "".join(map(build, args)) + ")"
def Gt(*args):
 return "(" + generate(20) + ")(" + "".join(map(build, args)) + ")"
def Eq(*args):
 return "(" + generate(21) + ")(" + "".join(map(build, args)) + ")"
def Ne(*args):
 return "(" + generate(22) + ")(" + "".join(map(build, args)) + ")"
def Le(*args):
 return "(" + generate(23) + ")(" + "".join(map(build, args)) + ")"
def Ge(*args):
 return "(" + generate(24) + ")(" + "".join(map(build, args)) + ")"
You can use it like this, type in:
 from bogen import *
 print(Out(Add(Inp(),Inp())))
to get:
 (()()()()()()()()()()()()()()()())((()())((()()()()()()()()()()()())()(()()()()()()()()()()()())()))
Or type in:
 from bogen import *
 print(Outc(52))
to get:
 (()()()()()()()()()()()()()()()()()())(()()()()()()(()()()())((()())(()()()()()()()()()()()()()())(()())(()()()()()()()()()()()()()())))
Most of the example programs you see here are actually generated with bogen.
==File extensions==
Currently, recommended file extensions for this esolang are .(), .bo and .bracketonly.
== See also ==
* Parentheses only
Category:Languages
Category:Cell-based
Category:Nested
Category:Functional paradigm