add functions docs
This commit is contained in:
parent
06838483d6
commit
ec99d5c940
43
functions.md
Normal file
43
functions.md
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
# Functions
|
||||||
|
|
||||||
|
Functions are first-class citizens in ginger. The simplest anonymous function
|
||||||
|
can be created like so:
|
||||||
|
|
||||||
|
```
|
||||||
|
(. fn [x]
|
||||||
|
(: + x 1))
|
||||||
|
```
|
||||||
|
|
||||||
|
This function takes in a single number and returns that number plus one. It
|
||||||
|
could be assigned to a variable on the package using `def`, or by using the
|
||||||
|
shortcut `defn`. The following two statements are equivalent:
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
(def incr
|
||||||
|
(. fn [x]
|
||||||
|
(: + x 1)))
|
||||||
|
|
||||||
|
(. defn incr [x]
|
||||||
|
(: + x 1))
|
||||||
|
```
|
||||||
|
|
||||||
|
## Variadic function
|
||||||
|
|
||||||
|
Functions may take in any number of variables using the `...` syntax, similar to
|
||||||
|
how go does variadic functions. The variadic variable must be the last in the
|
||||||
|
function's argument list, and is used as a list inside of the function. A list
|
||||||
|
may also be used as the input for a variadic function, also using the `...`
|
||||||
|
syntax.
|
||||||
|
|
||||||
|
The following is an example of both defining a variadic function and both ways
|
||||||
|
of using it. `+` is a variadic function in this example:
|
||||||
|
|
||||||
|
```
|
||||||
|
(. defn avg [...x]
|
||||||
|
(/
|
||||||
|
(+ x...)
|
||||||
|
(len x)))
|
||||||
|
|
||||||
|
(: fmt.Println (avg 1 2 3 4 5))
|
||||||
|
```
|
Loading…
Reference in New Issue
Block a user