blob: de16e7d2f2f3c59d38f6b81ded55c344002957af [file] [log] [blame]
-- frontmatter.toml --
title = "Types are values"
description = ""
-- text.md --
CUE merges the concepts of values and types.
Below is a demonstration of this concept,
showing respectively
some data, a possible schema for this data,
and something in between: a typical CUE constraint.
{{< blocks/sidebyside >}}
<div class="col">
<i>Data</i>
{{< highlight go >}}
moscow: {
name: "Moscow"
pop:   11.92M
capital: true
}
{{< /highlight >}}
</div>
<div class="col">
<i>Schema</i>
{{< highlight go >}}
municipality: {
name: string
pop:   int
capital: bool
}
{{< /highlight >}}
</div>
<div class="col">
<i>CUE</i>
{{< highlight go >}}
largeCapital: {
name: string
pop:   >5M
capital: true
}
{{< /highlight >}}
</div>
{{< /blocks/sidebyside >}}
In general, in CUE one starts with a broad definition of a schema,
describing all possible instances,
and then narrows down these definitions for particular use cases
until a concrete data instance remains.