
-- 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.
