Skip to main content
Version: 1.3.0


Namespaces can be nested, which means that we can define a namespace inside another namespace. As an illustration, let us define a variant of Euro in which the constants are all grouped inside using a sub-namespace.

namespace Euro {
export type t = nat;
export let add = (a: t, b: t): t => a + b;
export namespace Coin {
export let one: t = 1n;
export let two: t = 2n;

To access nested namespaces we simply apply the selection operator more than once:

type storage = Euro.t;
const increment = (s: storage) : storage =>
Euro.add (s,;

Note that the sub-namespace Coin had to be prefixed by the keyword export to enable access to its contents.