Language functions

append

Arguments: [list: Nullable[List[Nullable[Anything]]], element: Nullable[Anything]]

Returns: List[Nullable[Anything]]

Append an element to a list.

concat

Arguments: [lhs: Nullable[List[Nullable[Anything]]], rhs: Nullable[List[Nullable[Anything]]]]

Returns: List[Nullable[Anything]]

Concatenate two lists to create a new list.

map

Arguments: [iterable: List[Nullable[Anything]], foreach: λ(list_element)]

Returns: List[Nullable[Anything]]

Apply an expression to each element in a list to produce a new list. Serves the same purpose in RiskScape as a for loop or a list comprehension.

For convenience, the iterable argument does not have to be a list type. You can pass map() a single item and the foreach lambda expression will be applied to the first argument directly. E.g. map(1, foreach: (x) -> x + 1) will simply return 2.

Treating both lists and single items as iterable makes pipeline code reusable for a variety of different modelling situations. For example, sampling the hazard-layer can result in either a single hazard intensity value or a list of values, depending on the function used.

zip

Arguments: [lhs: List[Nullable[Anything]], rhs: List[Nullable[Anything]], lambda: λ(lhs_element,rhs_element)]

Returns: List[Nullable[Anything]]

Produces a new list by calling lamba with the nth elements from each input list, until the shortest input list is exhausted. For example the lamba expression (l1, l2) -> l1 + l2 would result in a list containing the sum of nth elements of each input list.

length

Arguments: [list: List[Nullable[Anything]]]

Returns: Integer

Returns the number of items in the list.

range

Arguments: [start: Integer, stop: Integer]

Returns: List[Integer]

Returns a list of integers that increase in value from start (inclusive) to stop (exclusive).

aggregate_struct

Arguments: [items: List[Nullable[Anything]], aggregation: Anything]

Returns: Nullable[Anything]

Aggregate function for applying aggregate functions to one of more members of a struct, e.g. group(struct_aggregate(loss, {max_damage: v -> max(v.damage)}), by: region) will apply max aggregation to the damage attribute of the loss type. Can also be used in a normal expression to aggregate values from tuples in a list.

null_of

Arguments: [typedef: Text]

Returns: Nullable[Anything]

Advanced function, useful for testing scenarios, for setting a null value of a specific type. For example, null_of('text') returns an expression that always evaluates to null but is still typed as text.

merge

Arguments: [original: Anything, replace: Anything]

Returns: {}

Merge two structs to produce a new struct. Members of replace take precedence over the original. This method is not recursive - that is, any nested structs that share the same attribute name will not be merged, one will win and the other will be replaced completely.

call

Arguments: [scope: {}, lambda: λ()]

Returns: Anything

Internal/Expert function for applying an expression to a specific scope, excluding any outer scope, contrary to how most RiskScape functions work. Useful for testing/debugging scenarios.

to_list

Arguments: [value: Anything]

Returns: List[Anything]

Aggregate function for combining all grouped elements in to a list.

Use with caution on large datasets, as this can lead to slow performance and memory issues.

Can also be used in a normal expressions to turn relational data into a list, e.g. to_list(bookmark('input_data.csv'))