高尔夫

This is a Chinese Golfing language by islptng, inspired by XENBLN. 
Because we have so many Chinese characters, we can have more commands.
==Data types==
Datatype 	Description 	Example 	How to generate
Nil 	NoneType 	nil 	空
Integer 	self-explanatory	123 	Written in base 32(零-九 0-9, 甲-癸 10-19, 子-亥 20-31). Example: 114514 = 三己午壬 Also can be written in base 10, such as 123 becames 十进一二三(the "十进" part works like how hexadecimal is accepted in C++). Note that for 0, both 零 and 〇 are accepted. Add 负 to the start of integer to make negative number, such as -114514 is 负三己午壬.
Fraction/Float	self-explanatory	123/45 or 123.45 	Base 32, division sign is 分, decimal point is 点. such as 1/31 becames 一分亥. Also can be written in base 10, such as 3.14159 becames 十进三点一四一五九.
Boolean 	True or false 	True 	真 or 假.
String 	self-explanatory	"你好世界" 	文你好世界止 To escape, use "特x". Available escape: 换 LF (回 CR), 表 tab, 退 backspace, 码 unicode, 止 “止”, 特 “特”, 铃 alarm, 纵 vertical tabulation, 删 character 127, 控x A control character with ASCII x(in base 32).
Array 	a dictionary 	[1,2,[3,4],"你好世界"] 	列...止
Undefined 	self-explanatory	Undefined 	Some undefined behavior returns this, such as 1/0, or 负一和十进零点五幂(sqrt(-1), which returns imaginary number, but this programming language doesn't support complex number).
Besides, we have a type called "Lambda".
===Type conversions===
The following is a table of type conversions. The column of a conversion specifies what datatype it converts from, and its row indicates the datatype it converts to; x represents the value being converted. These conversions happen automatically.
 	Integer 	Fraction/Float	Boolean 	String 	Array 	Nil 	Undefined
Integer 	 	floor(x) 	x ? 1 : 0 	parseInt(x) or 0 	length(x) 	0 	0
Fraction/Float	x/1 	 	x ? 1.0 : 0.0 	parseFloat(x) or 0.0	length(x) / 1 	0.0 	0.0
Boolean 	x != 0 	x != 0.0 	 	x != "" 	x != [] 	true	false
String 	toString(x)	toString(x) 	x ? "true" : "false"	 	"[" + ", ".join(x) + "]"	"" 	99 bottles of beer
Array 	[x] 	[x] 	[x] 	[x] 	 	[] 	[Undefined]
You will get an error when you tried to convert lambda to a normal data type. Convert from a normal data type to a lambda, you get a lambda that pushes that value onto stack.
==Commands==
===Arithmetic & Logical===
We push the arguments into a stack first, then call a function to pop it.
Commands 	Meaning 	Syntax example
加 减 乘 除 幂 模 根 对 	Arithmetic(add, subtract, multiply, divide, power, modulo, root, logarithm) 	三和六加 (should return 9)
上 下 	Fraction operators(ordinal/cardinal) 	一分亥下 (should return 31)
反 	Negate on integer/fraction/float, Not on boolean, Reverse on list/string. 	子反 (should return -20)
整 分 浮 字 表 逻 无 	Type conversion(integer, fraction, float, string, list, boolean, NoneType(both nil and undefined belongs to this.) ) 	一和零除字出 (should output 99 bottles of beers)
入 	Input. 	Not on display.
出 	Output. 	Not on display.
项 	B-th item in A. Numbers will be converted into strings for A. 	Not on display.
替 	Replace all of B in A with C. Numbers will be converted int strings for A. 	Not on display.
为 	Equal. 	Not on display.
超 	Greater than. 	Not on display.
沉 	Less than. 	Not on display.
原 	Used for quines and self-interpreters. For example, if A = 114514, it will return "三己午壬". if A = "你好\n", it will return "文你好特换止". 	Not on display.
范 	"range" in Python. Accepts all 3 arguments. 	Not on display.
===Flow Control===
Commands 	Meaning
a赋b 	Assign value a to a variable called b. b must be a single character.
取a 	Push the variable's value onto stack.
循 code 止 	Infinite loop.
x对i code止 	For every object in i as x, do code. If x is integer, repeat x times.
退 / 越 	Break / Continue
a若v1则code1止v2则code2止 ... 否default止 	Switch-case block.
试code错code止 	Try-except block.
函code止 	Pushes a lambda function to stack.
调 	Call the lambda function on the top of the stack.
Use 和 for separator. 
Other characters are NOP. All non-Chinese characters except those in strings are ignored.
Note:You can only input/output Chinese characters.
==Examples==
===與君九十九杯酒===
====Cheating====
 一和零除字出
====Cheating 2====
 负一和十零点五幂字出
====Serious====
 文春日宴特换止出三七酒赋循酒若零则退止止文與君馕杯酒可以窮歡宴綠酒一杯歌一遍特换止文馕止酒替出止文綠酒千杯腸已爛止出
===問天地好在===
 文問天地好在特换止出
===Judge if a number is even or odd===
 入数赋输文馕是槫数止文槫止取输二模若一则文奇止止否文偶止止替文馕止输替出
Category:Golfing languageCategory:CJK
Category:2024Category:Languages