# Types and Coercions

Hakaru is a simply-typed language which has a few basic types and some more complicated ones which can be built out of simpler types.

## Types

• nat is the type for natural numbers. This includes zero.
• int is the integer type.
• prob is the type for positive real number. This includes zero.
• real is the type for real numbers.
• array(x) is the type for arrays where each element is type x
• measure(x) is the type for probability distributions whose sample space is type x

## Coercions

For the primitive numeric types we also offer coercion functions.

• prob2real
• int2real
• nat2int
• real2prob
• real2int
• int2nat

For the ones which are always safe to apply such as nat2int we will automatically insert them if it is required for the program to typecheck.