Optional parameters

A function parameter can be made optional using the ? modifier after the parameter name; this means that the caller is not required to pass an argument to it.

When an optional parameter is omitted, the variable won't exist in the function body; as a result, accessing it can fail, causing an error. To prevent this from happening, you need to use a fallback expression to provide a default value.

Please note that all optional parameters must appear after all required parameters, and before any variadic parameter; breaking this order will cause a compiler error.

# Generates a map for a pet with a name and species (defaults to "dog")
[$gen-pet: name; species?] {
    (::
        name = <name>;
        species = <species ? "dog">; # Fallback to "dog" if species is undefined
    )
}