Arrays and Plate
Hakaru provides special syntax for arrays, which is distinct from the other data types.
Arrays
To construct arrays, we provide an index variable, size argument, and
an expression body. This body is evaluated for each index of the
array. For example, to construct the array [0,1,2,3]
:
array i of 4: i
Array Literals
We can also create arrays using the literal syntax a comma delimited
list surrounded by brackets: [0,1,2,3]
Array size and indexing
If a
is an array, then size(a)
is its number of elements, which is a nat
.
If i
is a nat
then a[i]
is the element of a
at index i
.
Indices start at zero, so the maximum valid value of i
is size(a)-1
.
Plate
Beyond, arrays Hakaru includes special syntax for describing measures
over arrays called plate
. Plate using the same syntax as array
but
the body must have a measure type. It returns a measure over arrays.
For example, if we wish to have a distribution over three independent
normal distributions we would do so as follows:
plate _ of 3: normal(0,1)