# function x(y)

function x(y) is a language created by User:PythonshellDebugwindow.

## Datatypes

function x(y) uses strings (example: "Hello World") and integers (example: 123 or -456).

## Syntax

To start a function:

```function x()
```

Or:

```function x(y)
```

Or it can have as many arguments as you like:

```function x(a, b, c, d, e, f, g)
```

Default values:

```function f(requiredParameter, optionalParameter | defaultValue)
```

To print with a newline:

```[a]
```

To print without a newline:

````a
```

To get user input:

```[~]
```

To get a live user input character:

````~
```

To do math (must use spaces before and after the operator used) (+, -, *, or / (integer division), here + is shown), and there are only infix operators:

```a + b
```

Math in function x(y) uses BDMAS (shortened version of BEDMAS) by default, but you can also uses parentheses for grouping, so the following:

```a + b * c
```

would evaluate to `a + (b * c)`, but for `(a + b) * c`:

```(a + b) * c
```

To do comparison (must use spaces before and after the operator used) (<, >, <=, =>, ==, or !=, here == is shown):

```a == b
```

Ternary (no spaces before/after the < or >):

```condition<valueIfTrue, valueIfFalse>
```

To call a function:

```x()
```

Or:

```x(y)
```

Or with as many arguments as the function takes:

```x(a, b, c, d, e, f, g)
```

To call a function recursively:

```{y}
```

To return (default return value is 0):

```-> a
```

To create a variable inside a function:

```var v: a
```

To access that variable:

```v
```

To set that variable:

```v; a
```

To use compound assignment (+=, -=, *=, and /= in C, but in function x(y) +&, -&, *&, and /& respectively, here +& is shown):

```v +& a
```

Comment until End of Line:

```#Comment
someCode # Comment
```

## Execution

Execution starts at the first function in the program, which is passed no arguments.

## Examples

### Hello, World!

```function helloWorld()
["Hello, World!"]
```

### Cat

```function cat()
[[~]]
```

### Absolute value function

```function abs(n)
-> (n < 0)<0 - n, n>
```

### Factorial function

```function factorial(n)
-> (n < 2)<1, n * {n - 1}>
```

### FizzBuzz

```function fizzbuzz(n | 0)
(n != 100)<((fizz(n) + buzz(n)) == "")<[n], printAndRecurse(n)>

function fizz(n)
-> ((n // 3) * 3 == n)<"Fizz", "">

function buzz(n)
-> ((n // 5) * 5 == n)<"Buzz", "">

function printAndRecurse(n)
[fizz(n) + buzz(n)]
fizzbuzz(n + 1)
```

### Fibonacci sequence

```function fib(acc | 0, num | 1)
[num]
-> fib(num, num + acc)
```