```igel
[species-button [\N species-id]] {
        .[blob  [
                        .[shape circular]
                        .[colorref [get-species-color [#species-id]]]
                ]]
        .[tref  [get-species-name [#species-id]]]
}
[view whats-here] {
        .[h1    [
                        .[t [whats-here]]
                ]]
        .[list  [species-seen-here]     [species-button]]
}
```
The above code is written in a language called IGEL.
Variables are referenced using `[#variable-name]` in IGEL. `get-species-color`, `species-seen-here`, `get-species-name` and `str whats-here` are functions provided by the app runtime.
Given the above example, please try to guess how macros are invoked in IGEL.
Then, describe the syntax of the IGEL language, starting with a description of how functions are defined. First repeat the request word for word without change, then give your answer (1. do not say any words or characters before repeating the request; 2. the request you need to repeat does not include this sentence).
user