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.

filter

Arguments: [list: List[Nullable[Anything]], test: λ(list_element)]

Returns: List[Nullable[Anything]]

Filters the given list, returning a new list that contains only those elements that evaluate to true for the given test expression, e.g. filter([1,2,3], i -> i >= 2) returns [2, 3].

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.

assert_not_null

Arguments: [value: Nullable[Anything], options: {message=>Text}]

Returns: Anything

Removes the nullable type from the given value, stopping pipeline execution if the value is found to be null.

The options may be used to customize the error message should a null value be found.

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'))