Ion query language
Given a Ion tree, produce a subset.
projecting: any <seq>
can be indexed by (a list of) keys
Seq-wrappers like map, list are "transparent":
let x = {a, b, c} // implicit keys equal to values
let y = [a, "b", 1]
let z = {0=zero, 1=one, zero=0, one=1}
// indexing
x.a // => .a
x[.a] // => .a
x[.a, .b] // => {.a, .b}
x[0] // => _, bottom, a value that cannot be stored at runtime.
y[.a] // => _
y[0] // => .a
// TODO: tuples, "the default value":
() // no values inside
(a) // implicity a pair `a = a`, but must evaluate to `a`, how?
filtering?
TODO: looks at Haskell optics