CUE is really promising and the article is a good first introduction to CUE. After reading it, there are a few things that don't fully click:
* How does CUE compare with a standard structural typing system, i.e. Typescript. Specifically, what is the deep difference between
john: #Person & {
age: 29
hobbies: [
"physics",
"reading",
]
}
and
type Person = {
age: number
hobbies: string[]
}
const john: Person = {
age: 29
hobbies: [
"physics",
"reading",
]
}
* How do constraints relate with the rest of the language? Specifically, why a limited set of ad-hoc operators `>=18` / `=~ regex` vs (Scala) lambda forms `_ >= 18` / `_ =~ regex`
* Where is the line between a data language and a full fledged programming language? For example, the list package, while (intentionally?) missing map / fold, indicates a strong demand for rich list processing capabilities. https://pkg.go.dev/cuelang.org/go@v0.4.0/pkg/list